Передача 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');
});
});
2 answers
Насколько я знаю о ресурсах
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
Для запроса типа "/проект/100/файл/56968" вы должны указать свой маршрут следующим образом:
Route::resource('project.file', 'FileController');
И затем вы можете получить параметры в методе show контроллера:
public function show($project, $file) {
dd([
'$project' => $project,
'$file' => $file
]);
}
Результатом этого примера будет:
array:2 [▼
"$project" => "100"
"$file" => "56968"
]