RouteCompiler中的Laravel DomainException变量名称在路由模式中不能超过32个字符

时间:2016-12-27 17:03:07

标签: php laravel laravel-5

由于名称变长,我收到此错误。 如何覆盖变量名?

我非常想保留资源名称。

我的路线是:

Route::resource(
    'computer-software-version-installation',
    'Web\Model\ComputerSoftwareVersionInstallationController'
);

2 个答案:

答案 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更直接相关。

https://github.com/laravel/framework/issues/1001