Маршрут ресурса с параметром - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть маршрут ресурса вот так

Route::resource('chapter', 'ChapterController');

Я хочу передать ему идентификатор параметра вот так

Route::resource('chapter/{id}', 'ChapterController');

и использовать его в моем контроллере вот так

public function index($id)
    {
        $subject=Subject::find($id);
        $chapter=Chapter::where('subject_id',$id)->get();
        return view('chapter.index',[
            'subject'=>$subject,
            'chapter'=>$chapter
        ]);
    }

Пожалуйста, помогите мне

Ответы [ 4 ]

1 голос
/ 09 февраля 2020

Route :: resource, который называется контроллером ресурсов RESTful, устанавливает маршруты по умолчанию и обрабатывает указанные ниже действия.

Verb          Path                                     Action                       Route Name

GET           /chapter                                 index                        chapter.index

GET           /chapter/create                          create                       chapter.create

POST          /chapter                                 store                        chapter.store

GET           /chapter/{id}                            show                         chapter.show

GET           /chapter/{id}/edit                       edit                         chapter.edit

PUT|PATCH     /chapter/{id}                            update                       chapter.update

DELETE        /chapter/{id}                            destroy                      chapter.destroy

Если вам необходимо добавить дополнительные маршруты к контроллеру ресурсов помимо значений по умолчанию набор маршрутов ресурсов, вы должны определить эти маршруты перед вызовом Route :: resource; в противном случае маршруты, определенные методом ресурса, могут непреднамеренно иметь приоритет над вашими дополнительными маршрутами:

Route::post('chapter/{id}', 'ChapterController@method')->name('chapter.action');
//...
Route::resource('chapter', 'ChapterController');
0 голосов
/ 09 февраля 2020

Если вы хотите использовать id для вашего index метода и уже объявили resource route, тогда вам нужно использовать пользовательский route, потому что laravel resource index route не поддержка id или любая другая parameter

//your Resource Route
Route::resource('chapter', 'ChapterController');

//Custom `route` for your `index` method it will replace your `resource index route`
Route::get('chapter/{id}', ['as'=>'chapter.index','uses'=>'ChapterController@index']);
0 голосов
/ 09 февраля 2020

убедитесь, что все методы контроллера ресурса передают ему идентификатор

0 голосов
/ 09 февраля 2020

Ваша индексная функция также должна быть с параметром Request: index (запрос $ request, $ id)

...