由于名称变长,我收到此错误。 如何覆盖变量名?
我非常想保留资源名称。
我的路线是:
Route::resource(
'computer-software-version-installation',
'Web\Model\ComputerSoftwareVersionInstallationController'
);
答案 0 :(得分:5)
以下是我要解决的问题:
Route::resource(
'computer-software-version-installation',
'Web\Model\ComputerSoftwareVersionInstallationController',
['parameters' => [
'computer-software-version-installation' => 'installation'
]]
);
为什么这有必要?
对于Laravel 5.3,这是扩展答案:
Illuminate\Routing\Router resource
method创建一个新的ResourceRegistrar来注册路由。此方法为$options
参数。
Illuminate\Routing\ResourceRegistrar register
method会将参数属性设置为$options['parameters']
值,然后调用getResourceWildcard
以使用{{1}的最后一部分设置$base
变量值}作为输入参数。
Illuminate\Routing\ResourceRegistrar getResourceWildcard
method会查看参数以查看是否有值,如果存在则使用它。否则它会通过一些回转来制作一个字符串。
因此,如果我们使用与路由名称匹配的密钥传递$name
数组,并且值等于占位符名称,则可以避免错误。
此处提到'parameters'
的问题:
https://github.com/laravel/framework/issues/1001#issuecomment-134887584
但似乎在这里被反驳为Symphony问题?
https://github.com/laravel/framework/issues/1001#issuecomment-212518768
希望这个答案可以帮助其他人解决问题。但它尚未经过广泛测试,因此可能仍有问题。
答案 1 :(得分:3)
这是一个相关的讨论。这个问题似乎与Sympfony更直接相关。