首页 > 解决方案 > 如何在数组 Laravel 中仅指定资源的方法

问题描述

在 web.php 我有这个 Route::resources 方法

Route::resources([
    'products' => App\Http\Controllers\ProductsController::class,
    'categories' => App\Http\Controllers\CategoriesController::class,
    'page-info' => App\Http\Controllers\PageInfoController::class,
]);

如何仅指定index,editupdate'page-info' 路由?以及如何为每条路线添加名称?我知道我可以这样做

Route::resource('products', ProductsController::class);
Route::resource('page-info', PageInfoController::class)->only([
    'index', 'edit', 'update'
]);
//itd...

但我喜欢阵列之一resources,并认为它也是可能的

标签: laravellaravel-8

解决方案


您不能做您想做的事,如果文档没有明确说明您可以或不可以,您可以随时查看源代码

因此,Laravel 8.x 的源代码有:

/**
 * Register an array of resource controllers.
 *
 * @param  array  $resources
 * @param  array  $options
 * @return void
 */
public function resources(array $resources, array $options = [])
{
    foreach ($resources as $name => $controller) {
        $this->resource($name, $controller, $options);
    }
}

所以,你可以做

Route::resources([
    'products' => App\Http\Controllers\ProductsController::class,
    'categories' => App\Http\Controllers\CategoriesController::class,
    'page-info' => App\Http\Controllers\PageInfoController::class,
], $options);

但是代码显示它将共享所有resources要创建的选项,所以答案是否定的,你不能(至少我正在查看源代码)。


推荐阅读