我正在使用Laravel 5,我想从另一个控制器重定向到登录页面。我习惯使用Redirect::route
,但路由定义为Route::controllers
。
laravel安装的路线:
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController',
]);
有没有办法可以将某些路由声明为命名路由,然后在Redirect::route
中使用它?
答案 0 :(得分:3)
您可以在控制器路径定义中命名您的路线:
如果您想在控制器上命名一些路线,那么 可以将一组名称作为第三个参数传递给控制器 方法:
Route::controller('users', 'UserController', [
'getShow' => 'user.show',
]);
然后你应该能够得到这样的网址:
$url = route('user.show');
或者您可以通过使用控制器和操作来获取URL而不指定名称:
$url = action('UserController@getShow');
最后总是有一个“直接”的网址:
$url = url('user/show');
的信息
关于直接在controllers
方法中命名。这是来自laravel core:
public function controllers(array $controllers)
{
foreach ($controllers as $uri => $controller)
{
$this->controller($uri, $controller);
}
}
正如您所看到的,名称不被接受或传递给控制器方法,因此您可能无法做到这一点。如果您想分配路由名称,则必须将Route:controllers
拆分为单独的Route::controller
并添加名称数组。