本教程操作环境:windows7系统、laravel6版、dell g3电脑。
laravel的路由命名
laravel 路由命名的作用:生成路由,便于重定向。
路由命名可以让特定路由方便地生成 url 或重定向。您可以用 name 方法链接到路由来定义指定路由的名称:
route::get('user/profile', function () { //})->name('profile');
还可以为控制器的方法指定路由名称:
route::get('user/profile', 'userprofilecontroller@show')->name('profile');
生成指向命名路由的 url
一旦为给定路由分配了名称,则在通过全局 route 函数生成 url 或重定向时,可以使用路由的名称:
// 生成 url...$url = route('profile');// 重定向...return redirect()->route('profile');
如果命名路由定义了参数,则可以将参数作为第二个参数传递给 route 函数。给定的参数将自动插入到其正确位置的 url 中:
route::get('user/{id}/profile', function ($id) { //})->name('profile');$url = route('profile', ['id' => 1]);
检查当前路由
如果您想要确定当前请求是否路由到给定的命名路由,您可以在路由实例上使用 named 方法。例如,您可以在路由中间件检查当前路由名称:
/** * handle an incoming request. * * @param \illuminate\http\request $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/fooroute::resource('products', 'productscontroller', ['names' => 'foo']);route('foo.index'); // http://your.website/productsroute::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
【相关推荐:laravel视频教程】
以上就是laravel的路由命名有什么用的详细内容。