Laravel 响应:重定向至控制器行为
问题
我可以在一个控制器或路由中,重定向至其它控制器行为么?
回答
在一个控制器或路由中,是可以跳转至指定的其它控制器行为(Action)的。首先通过无参调用 redirect()
全局辅助函数,返回 Illuminate\Routing\Redirector
实例,然后把控制器和行为名传递给其 action
方法即可。不需要传递控制器的完整的命名空间,Laravel 的 RouteServiceProvider
会自动设置。
跳转至 HomeController
控制器的 index
行为:
return redirect()->action('HomeController@index');
如果控制器行为需要参数,可以在 action
方法的第二个参数中传递:
return redirect()->action(
'UserController@profile', ['id' => 1]
);
需要注意的是,在 action()
方法中指定的控制器和行为,必须是已在路由文件中注册的,且只对 GET 路由有效。可在终端中项目根目录输入以下命令查看都有哪些控制器及行为是可用的:
$ php artisan route:list
更多限制及细节,请见参考中的 Laravel 5 redirect to controller actions。