Halo Habr. Baru-baru ini, saya setuju untuk meninjau situs yang dipesan secara freelance. Saya berharap untuk melihat pengontrol yang melakukan segalanya dan menempati lebih dari 200 baris (dan manifestasi kode buruk lainnya), tetapi semuanya cukup baik. Validasi tidak terletak pada controller, yang cukup umum. Terkadang, tentu saja, ada beberapa inkonsistensi PSR-2, tetapi semuanya tampak baik-baik saja sampai saya melihat ke dalam file dengan rute. Itu menduduki beberapa layar dan memiliki komentar tentang grup rute. Saya menghubungi pengembang dan dia mengatakan bahwa semuanya telah "tumbuh" sedikit dan setuju untuk memperbaikinya. Dalam versi berikutnya, saya melihat bahwa ia menciptakan beberapa kelas dengan metode statis, di mana ia mentransfer kode dan memanggil mereka, seperti yang biasanya dilakukan, dengan otorisasi. Kemudian saya ingat bahwa saya sudah menemukan ini dan bertemu dengan argumen seperti itu: "Dokumentasi tidak mengatakan apa-apa tentang mengambil rute ke file yang berbeda." Hanya beberapa menit kemudian saya menemukan sebuah artikel dan mengirimkannya ke pengembang. Setelah setengah jam, saya menerima rute dalam bentuk normal dan memutuskan bahwa artikel ini akan bermanfaat bagi banyak pemula. Jadi terjemahan gratis ini lahir.
Jika Anda belum pernah mengedit file RouteServiceProvider, selamat datang di cat.
Jika Anda bekerja dengan proyek kecil dan Anda hanya memiliki beberapa rute, maka tidak akan ada masalah. Tetapi ketika jumlah rute terlalu besar, bekerja dalam satu file menjadi sulit, terutama ketika Anda memiliki halaman untuk pengguna yang berbeda, administrator, dll.
Awalnya, laravel membuat 4 file:
- api.php
- console.php
- channels.php
- web.php
Misalkan Anda berencana membuat proyek dengan sepuluh halaman untuk setiap jenis pengguna:
- Administrator [pengaturan situs, statistik, dll. ]
- Pengguna [pendaftaran, masuk, manajemen profil, dll. ]
- Tamu [blog, kontak, dll. ]
Buat dua direktori di dalam
rute :
- web - di sini adalah semua rute yang terkait dengan antarmuka web.
- api - ini semua rute terkait API
Kami memindahkan
api.php dari
rute ke
direktori rute / api dan
web.php di
route / web , dan meninggalkan
console.php dan
channels.php yang tersisa di rute.
Buat file
admin.php di dalam
rute / web . File ini akan berisi semua rute web kami yang terkait dengan administrator, dan kemudian buat
user.php di sana untuk rute yang terkait dengan pengguna.
app / Providers / RouteServiceProvider.php - file ini bertanggung jawab untuk mengunduh semua rute aplikasi kita. Metode
map () memanggil metode
mapApiRoutes () dan
mapWebRoutes () untuk memuat file
web.php dan
api.php yang telah kita pindahkan, jadi mari kita perbaiki path ke file rute.
protected function mapWebRoutes() { Route::middleware('web') ->namespace($this->namespace) ->group(base_path('routes/web/web.php')); }
protected function mapApiRoutes() { Route::prefix('api') ->middleware('api') ->namespace($this->namespace) ->group(base_path('routes/api/api.php')); }
Sekarang buat metode baru untuk
rute / web / admin.php dan
rute / web / user.php di dalam
RouteServiceProvider.php protected function mapAdminWebRoutes() { Route::middleware('web') ->namespace($this->namespace) ->prefix('admin') ->group(base_path('routes/web/admin.php')); }
protected function mapUserWebRoutes() { Route::middleware('web') ->namespace($this->namespace) ->prefix('user') ->group(base_path('routes/web/user.php')); }
Harap dicatat bahwa dalam kode ini dimungkinkan untuk menambahkan namespace, middleware, awalan, dll. Untuk path.
Selanjutnya, panggil saja mereka dari peta ():
public function map() { $this->mapApiRoutes(); $this->mapWebRoutes(); $this->mapAdminWebRoutes(); $this->mapUserWebRoutes(); }
Langkah terakhir:
Buka rute / web / user.php dan tambahkan rute uji:
Route::get('/test', function () { return response(' ', 200); });
Pergi ke site.local / user / test, Anda akan melihat teks "Test Route".