带有参数的 Laravel 资源导致其他路由抛出错误

Posted

技术标签:

【中文标题】带有参数的 Laravel 资源导致其他路由抛出错误【英文标题】:Laravel resource with parameter causing other routes to throw error 【发布时间】:2013-10-30 20:09:51 【问题描述】:

我遇到了这个问题,如果我在第一个路由中定义一个参数,第二个会抛出这个错误:

“路由模式“/browse/brand/brand”不能多次引用变量名“brand”。”

Route::resource('browse/brand', 'BrowseController');

Route::group(array('prefix' => 'service'), function()  
    Route::resource('authenticate', 'AuthenticationController');
);

如果我取出参数,当然会破坏浏览路线,但随后身份验证路线有效。

有人知道这是什么原因吗?

【问题讨论】:

【参考方案1】:

原因是Route::resource 在后台为您指定的控制器创建了几个(RESTful)路由处理程序:

http://laravel.com/docs/controllers#resource-controllers

查看名为:Actions Handled By Resource Controller

的表格

你可以看到 Laravel 已经为你处理了带有参数的路由,你可以使用这些参数来实现浏览。

我不认为Route::resource 的预期用途是像您尝试的那样进行参数化。

当然,如果那些不符合您的需求,您总是可以实施其他路线。

【讨论】:

该表确实显示了一个允许您传入参数的方法,显示。奇怪的是,如果我颠倒路线的顺序,它们都可以工作并且我没有收到错误,但之后的任何事情都会失败。不清楚发生了什么。我能够通过注册 GET 路由并将另一种方法添加到控制器 Route::group(array('prefix' => 'service'), function() Route::resource('authenticate', 'AuthenticationController'); ); Route::resource('browse/brand', 'BrowseController');

以上是关于带有参数的 Laravel 资源导致其他路由抛出错误的主要内容,如果未能解决你的问题,请参考以下文章

使用路由 Laravel 5.2 时访问资源时出错

Laravel 验证请求和 API 路由 POST 参数

带有前缀和资源的laravel嵌套路由不起作用

Laravel 5.4:从 CSRF 验证中排除带有参数的路由

带有连字符 404 错误的 Laravel 路由参数

Laravel 5.2 带有可变参数的命名路由用法