使用 Laravel 4.2,是否可以为资源 Controller 路由分配名称?我的路线定义如下:

Route::resource('faq', 'ProductFaqController');

我尝试向路线添加名称选项,如下所示:
Route::resource('faq', 'ProductFaqController', array("as"=>"faq"));

但是,当我点击/faq 路线并将 {{ Route::currentRouteName() }} 放在我的 View 中时,它会产生 faq.faq.index 而不仅仅是 faq

最佳答案

当您使用资源 Controller 路由时,它会自动为它创建的每个单独路由生成名称。 Route::resource() 基本上是一个辅助方法,然后为您生成单独的路由,而不是您需要手动定义每个路由。

您可以在终端/控制台中查看通过在 Laravel 4 中键入 php artisan routes 或在 Laravel 5 中键入 php artisan route:list 生成的路由名称。您还可以在资源 Controller 文档页面 ( Laravel 4.x | Laravel 5.x ) 上看到生成的路由名称的类型。

有两种方法可以修改资源 Controller 生成的路由名称:

  • 提供一个 names 数组作为第三个参数 $options 数组的一部分,每个键是资源 Controller 方法(索引、存储、编辑等),值是你想要给路由的名称。
    Route::resource('faq', 'ProductFaqController', [
        'names' => [
            'index' => 'faq',
            'store' => 'faq.new',
            // etc...
        ]
    ]);
    
  • 指定 as 选项为每个路由名称定义前缀。
    Route::resource('faq', 'ProductFaqController', [
        'as' => 'prefix'
    ]);
    

    这将为您提供诸如 prefix.faq.indexprefix.faq.store 等路线。
  • 关于php - 资源 Controller 的 Laravel 命名路由,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25290229/

    10-14 14:15
    查看更多