Я пытаюсь построить свои маршруты, используя ресурсы, чтобы я мог передать два параметра в мои ресурсы.
Я приведу несколько примеров того, как будут выглядеть 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
Таким образом, вы можете видеть, что мне всегда нужно иметь ссылку на идентификатор_проекта, а также идентификатор электронной почты / файла и т. Д.
Я понимаю, что могу сделать это вручную, написав все маршруты вручную, но я пытаюсь придерживаться модели ресурсов.
Я подумал, что-то вроде этого может работать?
Route::group(['prefix' => 'project'], function(){
Route::group(['prefix' => '{project_id}'], function($project_id){
// Files
Route::resource('files', 'FileController');
});
});
Насколько я знаю о ресурсах
Route::resource('files', 'FileController');
Вышеупомянутый ресурс будет маршрутизировать следующие URL.
Несколько действий, выполняемых контроллером ресурсов для вашего 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
Для запроса типа ‘/ 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"]