我正在尝试使用资源构建我的路由,以便我可以将两个参数传递到我的资源中。
我将举几个例子说明URL的外观:
domain.com/dashboard
domain.com/projects
domain.com/project/100
domain.com/project/100/emails
domain.com/project/100/email/3210
domain.com/project/100/files
domain.com/project/100/file/56968
所以你可以看到我总是需要引用project_id以及电子邮件/文件ID等。
我意识到我可以通过手动编写所有路线来手动执行此操作,但我正在尝试坚持使用资源模型。
我觉得这样的事可能有用吗?
Route::group(['prefix' => 'project'], function(){
Route::group(['prefix' => '{project_id}'], function($project_id){
// Files
Route::resource('files', 'FileController');
});
});
答案 0 :(得分:9)
据我所知资源
Route::resource('files', 'FileController');
上述资源将路由以下网址。
资源控制器为您的Route::resource('files', 'FileController');
Route::get('files',FileController@index) // get req will be routed to the index() function in your controller
Route::get('files/{val}',FileController@show) // get req with val will be routed to the show() function in your controller
Route::post('files',FileController@store) // post req will be routed to the store() function in your controller
Route::put('files/{id}',FileController@update) // put req with id will be routed to the update() function in your controller
Route::delete('files',FileController@destroy) // delete req will be routed to the destroy() function in your controller
上面提到的单resource
将执行列出的所有routing
除了那些你必须写下你的custom route
在您的
场景中Route::group(['prefix' => 'project'], function(){
Route::group(['prefix' => '{project_id}'], function($project_id){
// Files
Route::resource('files', 'FileController');
});
});
domain.com/project/100/files
如果其get
请求将被路由到FileController@index
,如果其post
请求将被路由到FileController@store
如果您的" domain.com/project/100/file/56968
"更改为" domain.com/project/100/files/56968
" (文件到文件),然后将发生以下生根...
domain.com/project/100/files/56968
如果其get
请求将被路由到FileController@show
,如果其put
请求将被路由到FileController@update
如果其delete
请求将被路由到FileController@destroy
并且它对您提到的任何其他url
没有影响
如果提供,您需要RESTful Resource Controllers
答案 1 :(得分:5)
对于像'/ project / 100 / file / 56968'这样的请求,您必须指定这样的路线:
Route::resource('project.file', 'FileController');
然后你可以在控制器的show方法中获取参数:
public function show($project, $file) {
dd([
'$project' => $project,
'$file' => $file
]);
}
此示例的结果将是:
array:2 [▼
"$project" => "100"
"$file" => "56968"
]