资源控制器的 Laravel 命名路由

2022-01-08 00:00:00 php laravel laravel-4

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

Using Laravel 4.2, is it possible to assign a name to a resource controller route? My route is defined as follows:

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

我尝试像这样向路线添加名称选项:

I tried adding a name option to the route like this:

Route::resource('faq', 'ProductFaqController', array("as"=>"faq"));

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

However, when I hit the /faq route and place {{ Route::currentRouteName() }} in my view, it yields faq.faq.index instead of just faq.

推荐答案

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

When you use a resource controller route, it automatically generates names for each individual route that it creates. Route::resource() is basically a helper method that then generates individual routes for you, rather than you needing to define each route manually.

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

You can view the route names generated by typing php artisan routes in Laravel 4 or php artisan route:list in Laravel 5 into your terminal/console. You can also see the types of route names generated on the resource controller docs page (Laravel 4.x | Laravel 5.x).

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

There are two ways you can modify the route names generated by a resource controller:

  1. 提供一个 names 数组作为第三个参数 $options 数组的一部分,每个键都是资源控制器方法(索引、存储、编辑等).),并且值是您要为路线提供的名称.

  1. Supply a names array as part of the third parameter $options array, with each key being the resource controller method (index, store, edit, etc.), and the value being the name you want to give the route.

Route::resource('faq', 'ProductFaqController', [
    'names' => [
        'index' => 'faq',
        'store' => 'faq.new',
        // etc...
    ]
]);

  • 指定 as 选项以定义每个路由名称的前缀.

  • Specify the as option to define a prefix for every route name.

    Route::resource('faq', 'ProductFaqController', [
        'as' => 'prefix'
    ]);
    

    这将为您提供诸如 prefix.faq.indexprefix.faq.store 等路由.

    This will give you routes such as prefix.faq.index, prefix.faq.store, etc.

  • 相关文章