我有一个资源,由两个参数定义(在现实世界中)。让我们以汽车类比:我喜欢可访问的资源如下:
/cars/{model}/{make}
我知道我可以为此创建一个控制器并指向它的路由,但我无法弄清楚如何使用资源路由执行此操作:
Route::resource('/cars', 'CarController');
这将创建仅包含一个参数的路径:
GET/HEAD cars App\Http\Controllers\CarController@index
POST cars App\Http\Controllers\CarController@store
GET/HEAD cars/new App\Http\Controllers\CarController@create
GET/HEAD cars/{car} App\Http\Controllers\CarController@show
PUT/PATCH cars/{car} App\Http\Controllers\CarController@update
DELETE cars/{car} App\Http\Controllers\CarController@destroy
GET/HEAD cars/{car}/edit App\Http\Controllers\CarController@edit
其中{car}
参数指的是数据库密钥。
是否可以使用两个参数{make}
和{model}
(如果是:如何)创建资源路径?
或者我是否必须手动创建所有路线?
我使用Laravel 5.5,如果有任何不同。
要说清楚,我想最终:
GET/HEAD cars App\Http\Controllers\CarController@index
POST cars App\Http\Controllers\CarController@store
GET/HEAD cars/new App\Http\Controllers\CarController@create
GET/HEAD cars/{make}/{model} App\Http\Controllers\CarController@show
PUT/PATCH cars/{make}/{model} App\Http\Controllers\CarController@update
DELETE cars/{make}/{model} App\Http\Controllers\CarController@destroy
GET/HEAD cars/{make}/{model}/edit App\Http\Controllers\CarController@edit
edit
函数(例如)将如下所示:
public function edit(string $make, string $model) {
// sort out DB entry and provide it to a view
}
答案 0 :(得分:0)
资源路由不希望以这种方式设置。您可以执行嵌套资源,但仍会在参数之间添加一个段。
自己定义路线; Route::resource
只需注册7条路线,您可以随时自行注册。
我最接近的是:
Route::resource('cars.model', 'CarsController', [
'parameters' => ['cars' => 'make']
]);
cars/{make}/model/{model}