Передача 2 параметров в маршруты Laravel — Ресурсы

Я пытаюсь построить свои маршруты, используя ресурсы, чтобы я мог передать два параметра в мои ресурсы.

Я приведу несколько примеров того, как будут выглядеть 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');

});
});

7

Решение

Насколько я знаю о ресурсах

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

9

Другие решения

Для запроса типа ‘/ 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"]
5

По вопросам рекламы [email protected]