Kita semua menggunakan rute sederhana :: get () dan route :: post () sintaks, tetapi dalam proyek yang lebih besar, itu menjadi jauh lebih rumit. Artikel ini akan menyusun berbagai tips untuk situasi yang berbeda.
Tip 1. Route :: get () sebelum rute :: sumber daya ()
Untuk pengontrol sumber daya, ini adalah salah satu kesalahan yang paling umum, lihat contoh ini:
Route::resource('photos', 'PhotoController');
Route::get('photos/popular', 'PhotoController@method');
Rute kedua tidak akan akurat, Anda tahu mengapa? Karena itu akan cocok menunjukkan() metode Route :: Resource () yang /foto/{id}yang akan menetapkan “populer” sebagai $ id parameter.
Jadi, jika Anda ingin menambahkan rute get/post apa pun, selain Route :: Resource (), Anda harus meletakkannya di depan sumber daya. Seperti ini:
Route::get('photos/popular', 'PhotoController@method');
Route::resource('photos', 'PhotoController');
Tip 2. Grup di grup lain
Kita mungkin semua tahu bahwa kita dapat mengelompokkan rute dengan rute :: group () dan menetapkan berbagai middlewares/awalan dan parameter lainnya, seperti rute publik dan rute masuk.
Tetapi bagaimana jika Anda membutuhkan seperangkat aturan tertentu untuk sub-kelompok kelompok-kelompok itu?
Contoh khas: Anda memerlukan rute publik dan rute yang diautentikasi, tetapi dalam grup yang diautentikasi, Anda perlu memisahkan administrator dari pengguna sederhana.
Jadi Anda bisa melakukan ini:
// public routes
Route::get('/', 'HomeController@index');
// Logged-in users - with "auth" middleware
Route::group(['middleware' => ['auth']], function () {
// /user/XXX: In addition to "auth", this group will have middleware "simple_users"
Route::group(['middleware' => ['simple_users'], 'prefix' => 'user'], function () {
Route::resource('tasks', 'TaskController');
});
// /admin/XXX: This group won't have "simple_users", but will have "auth" and "admins"
Route::group(['middleware' => ['admins'], 'prefix' => 'admin'], function () {
Route::resource('users', 'UserController');
});
});
Tip 3. Validasi Parameter Rute-Contoh Multi-Bahasa
Kasing yang cukup khas adalah untuk mengawali rute Anda berdasarkan lokal bahasa, seperti FR/Blog Dan di/artikel/333. Bagaimana kita memastikan bahwa kedua huruf pertama itu tidak digunakan untuk bahasa selain bahasa?
Kami dapat memvalidasi secara langsung di rute, dengan parameter “di mana”:
Route::group(['prefix' => '{locale}', 'where' => ['locale' => '[a-zA-Z]{2}']], function () {
Route::get('/', 'HomeController@index');
Route::get('article/{id}', 'ArticleController@show');
});
Bagian utama di sini adalah ‘di mana’ => [‘locale’ => ‘[a-zA-Z]{2} ‘] di mana kami menggunakan ekspresi reguler untuk mencocokkan hanya kombinasi dua huruf.
Tip 4. Routing subdomain dinamis
Ini datang langsung dari dokumentasi Laravel resmi, tetapi jarang digunakan, jadi saya pikir menyebutkannya.
Jika Anda memiliki subdomain dinamis, seperti subdomain yang berbeda untuk setiap pengguna, itu perlu menjadi variabel, bukan? Laravel telah melakukan itu secara otomatis untuk Anda. Lihat contoh:
Route::domain('{account}.myapp.com')->group(function () {
Route::get('user/{id}', function ($account, $id) {
//
});
});
Perhatikan itu {akun} secara otomatis dilewatkan sebagai $ akun Parameter dalam semua metode pengontrol di dalam, jadi Anda harus menerimanya di semua, jangan lupa.
Tip 5. Hati-hati dengan ikatan model rute non-Inggris
Terkadang, URL harus berisi kata-kata non-Inggris. Misalnya, Anda memiliki portal Spanyol untuk buku dan Anda ingin memiliki url seperti /buku untuk daftar buku, dan buku tunggal akan dimiliki /Buku/1seperti pengontrol sumber daya normal.
Tetapi dalam database, semua nama harus dalam bahasa Inggris, jadi Laravel “Magic” dapat bekerja antara tunggal dan jamak, bukan?
Jadi, jika Anda menghasilkan buku model dengan migrasi dan pengontrol, Anda mungkin memiliki perintah ini:
php artisan make:model Book -mcr
Itu -mcr Kunci akan menghasilkan model dan pengontrol sumber daya, baca lebih lanjut di artikel ini. Jadi, dalam pengontrol itu, Anda akan memiliki ini:
/**
* Display the specified resource.
*
* @param \App\Book $book
* @return \Illuminate\Http\Response
*/
public function show(Book $book)
{
// ...
}
Tapi di Anda rute/web.phpAnda akan memiliki ini:
Route::resource('libros', 'BookController');
Masalahnya adalah itu tidak akan berhasil. Masalah yang bahkan lebih besar adalah tidak akan melakukan kesalahan, hanya $ buku akan kosong, dan Anda tidak akan mengerti mengapa.
Menurut deskripsi pengontrol sumber daya resmi, nama variabel harus sama dengan parameter dalam singular:
// So instead of
public function show(Book $book)
{
// ...
}
// You should have
public function show(Book $libro)
{
// ...
}
Tapi, untuk menjadi sangat jujur, dalam proyek-proyek dengan proyek-proyek non-Inggris, saya sarankan untuk tidak menggunakan rute :: sumber daya dan rute model mengikat sama sekali. Terlalu banyak “sihir” tidak dapat diprediksi, seperti bagaimana Laravel akan “menebak” bahwa “libros” tunggal itu “libro”?
Tip 6. Rute API – Dari V1 ke V2
Bayangkan Anda bekerja dengan proyek berbasis API dan Anda perlu merilis versi baru API ini. Jadi titik akhir yang lebih tua akan tetap di API/[something]dan untuk versi baru yang akan Anda gunakan api/v2/[something].
Seluruh logika masuk APP/PENYEDIA/ROUTESERVICEPROVIDER.PHP:
public function map()
{
$this->mapApiRoutes();
$this->mapWebRoutes();
// ...
}
protected function mapWebRoutes()
{
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
}
protected function mapApiRoutes()
{
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
}
Seperti yang Anda lihat, rute API terdaftar dalam fungsi terpisah dengan awalan API/.
Jadi, jika Anda ingin membuat grup rute V2, Anda dapat membuat yang terpisah Rute/API_V2.PHP dan lakukan ini:
public function map()
{
// ... older functions
$this->mapApiV2Routes();
}
// And new function
protected function mapApiV2Routes()
{
Route::prefix('api/V2')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api_v2.php'));
}
Dengan cara ini, rute lama tidak akan pecah, dan Anda hanya akan membuat satu set rute baru.
Tip 7. Batas Tingkat – Global dan untuk Tamu/Pengguna
Ini juga berasal dari dokumentasi resmi, tetapi dengan detail yang kurang diketahui.
Pertama, Anda dapat membatasi beberapa URL untuk disebut maksimum 60 kali per menit, dengan Throttle: 60,1.
Route::middleware('auth:api', 'throttle:60,1')->group(function () {
Route::get('/user', function () {
//
});
});
Tetapi tahukah Anda bahwa Anda dapat melakukannya secara terpisah untuk umum dan untuk pengguna yang masuk?
// maximum of 10 requests per minute for guests 60 for authenticated users
Route::middleware('throttle:10|60,1')->group(function () {
//
});
Anda juga dapat memiliki bidang DB Users.RATE_LIMIT dan batasi jumlah untuk pengguna tertentu:
Route::middleware('auth:api', 'throttle:rate_limit,1')->group(function () {
Route::get('/user', function () {
//
});
});
Tip 8. Daftar Rute dan Caching Rute
Kiat akhir – Cara memeriksa rute yang ada.
Tidak semua dari Anda tahu rute apa yang sebenarnya disembunyikan di bawah Route :: Resource ()atau di bawah beberapa rute yang lebih kompleks :: Pernyataan grup.
Tetapi pada titik mana pun, Anda dapat memeriksa rute Anda yang sebenarnya dengan perintah pengrajin:
php artisan route:list
Perlu diingat, bahwa Anda menggunakan caching rute, setelah setiap perubahan rute Anda, Anda perlu meluncurkan perintah:
php artisan route:clear
News
Berita
News Flash
Blog
Technology
Sports
Sport
Football
Tips
Finance
Berita Terkini
Berita Terbaru
Berita Kekinian
News
Berita Terkini
Olahraga
Pasang Internet Myrepublic
Jasa Import China
Jasa Import Door to Door
Gaming center adalah sebuah tempat atau fasilitas yang menyediakan berbagai perangkat dan layanan untuk bermain video game, baik di PC, konsol, maupun mesin arcade. Gaming center ini bisa dikunjungi oleh siapa saja yang ingin bermain game secara individu atau bersama teman-teman. Beberapa gaming center juga sering digunakan sebagai lokasi turnamen game atau esports.
Comments are closed, but trackbacks and pingbacks are open.