Laravel 将不同的控制器赋予相同的 Get 路由

Posted

技术标签:

【中文标题】Laravel 将不同的控制器赋予相同的 Get 路由【英文标题】:Laravel giving different controller to the same Get route 【发布时间】:2018-12-12 05:31:24 【问题描述】:

当我点击页面上的一个按钮时,我希望执行一些功能并再次返回页面。

Route::get('/team/team', 'HomeController@team')->name('team');
Route::get('/team/team', 'HomeController@makeOwner')->name('make-owner');

我有这样的路线。当我尝试去刀片时,我得到了这个错误。

"Route [team] not defined. (View: /var/www/resources/views/teams.blade.php)"

我该如何解决这个错误或任何建议以更好的方式执行此操作?

【问题讨论】:

这些是否在一个路由组中?使用artisan route:list 是查看所有已注册路由的好方法。 在您的情况下,仅注册了第二条路线。 Davit 是对的,没有意识到您使用的是相同的 URI 和方法。 【参考方案1】:
Route::get('/team/team', 'HomeController@team')->name('team');
Route::get('/team/team', 'HomeController@makeOwner')->name('make-owner');

当您在路由中使用相同的方法和相同的 uri 时,只会注册最后一个路由。这种情况下只会注册第二个路由。你必须改变你的路线。或者在视图中使用route('make-owner') 而不是route('team')。 比如改路线比较好

Route::get('/team/team', 'HomeController@team')->name('team');
Route::get('/team/team/make-owner', 'HomeController@makeOwner')->name('make-owner'); 

或更改一种路由方法,例如一种get第二种put

Route::get('/team/team', 'HomeController@team')->name('team');
Route::put('/team/team', 'HomeController@makeOwner')->name('make-owner');

【讨论】:

没有办法使用同一个URI吗? 两条路线有一些方法和相同的 uri 你不能,你可以一个 get 一个 post 方法 也许我能说出我想要做什么然后你可以给出一个想法。 是的,告诉你你想做什么 有一个页面叫team,页面上有一些用户。我在每个用户旁边放了一个链接按钮。单击按钮时,该用户将成为经理角色,然后将重新加载相同的团队页面。

以上是关于Laravel 将不同的控制器赋予相同的 Get 路由的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 相同的路由,不同的控制器

如何在 laravel 中为两种不同的控制器功能方法使用相同的路由

相同的路由但在 Laravel 5.1 路由中调用不同的控制器

Laravel中的路由问题,带有多个控制器和具有相同名称的不同路由[关闭]

Laravel Model::all() 或 Model::get 问题

Laravel 中间件将变量返回给控制器