Laravel 响应:重定向至控制器行为 2 个改进

问题

我可以在一个控制器或路由中,重定向至其它控制器行为么?

回答

在一个控制器或路由中,是可以跳转至指定的其它控制器行为(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

参考

本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!