在laravel中,路由命名的作用是生成路由,便于重定向;路由命名可以讓特定路由方便地生成URL或重定向。開發(fā)者可以用name方法鏈接到路由來定義指定路由的名稱。
本教程操作環(huán)境:windows7系統(tǒng)、Laravel6版、Dell G3電腦。
laravel的路由命名
laravel 路由命名的作用:生成路由,便于重定向。
路由命名可以讓特定路由方便地生成 URL 或重定向。您可以用 name 方法鏈接到路由來定義指定路由的名稱:
Route::get('user/profile',?function?()?{ ????// })->name('profile');
還可以為控制器的方法指定路由名稱:
Route::get('user/profile',?'UserProfileController@show')->name('profile');
生成指向命名路由的 URL
一旦為給定路由分配了名稱,則在通過全局 route 函數(shù)生成 URL 或重定向時,可以使用路由的名稱:
//?生成?URL... $url?=?route('profile'); //?重定向... return?redirect()->route('profile');
如果命名路由定義了參數(shù),則可以將參數(shù)作為第二個參數(shù)傳遞給 route 函數(shù)。給定的參數(shù)將自動插入到其正確位置的 URL 中:
Route::get('user/{id}/profile',?function?($id)?{ ????// })->name('profile'); $url?=?route('profile',?['id'?=>?1]);
檢查當前路由
如果您想要確定當前請求是否路由到給定的命名路由,您可以在路由實例上使用 named 方法。例如,您可以在路由中間件檢查當前路由名稱:
/** ?*?Handle?an?incoming?request. ?* ?*?@param??IlluminateHttpRequest??$request ?*?@param??Closure??$next ?*?@return?mixed ?*/ public?function?handle($request,?Closure?$next) { ????if?($request->route()->named('profile'))?{ ????????// ????} ????return?$next($request); }
路由名稱前綴
name 方法可以用來給路由組中的每個路由名稱添加一個給定的字符串。 例如,您可能希望以 「admin」為所有分組路由的名稱加前綴。 給定的字符串與指定的路由名稱前綴完全相同,因此我們將確保在前綴中提供尾部的 . 字符:
Route::name('admin.')->group(function?()?{ ????Route::get('users',?function?()?{ ????????//?指定路由名為?"admin.users"... ????})->name('users'); });
Resource 路由命名
resource 路由
Route::resource('users',?'UsersController');
上面代碼將等同于:
Route::get('/users',?'UsersController@index')->name('users.index'); Route::get('/users/{user}',?'UsersController@show')->name('users.show'); Route::get('/users/create',?'UsersController@create')->name('users.create'); Route::post('/users',?'UsersController@store')->name('users.store'); Route::get('/users/{user}/edit',?'UsersController@edit')->name('users.edit'); Route::patch('/users/{user}',?'UsersController@update')->name('users.update'); Route::delete('/users/{user}',?'UsersController@destroy')->name('users.destroy');
resource 路由的命名
Route::resource('foo',??'ProductsController'); route('foo.index');?//?http://your.website/foo Route::resource('products',??'ProductsController',??['names'??=>??'foo']); route('foo.index');?//?http://your.website/products Route::resource('products',??'ProductsController',??['names'??=>??'admin.products']); route('admin.products.index');?//?http://your.website/products
resource 路由前綴:
Route::resource('products',??'ProductsController',??['as'??=>??'admin']); route('admin.products.index');?//?http://your.website/products
【相關(guān)推薦:laravel視頻教程】
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END
喜歡就支持一下吧
相關(guān)推薦