Laravel: 为子项创建路由资源

Laravel: Creating route resource for sub items

你好,我是 laravel 的新手,我想创建一个嵌套系统

这是我的梦想mmmm

我的web.php

Route::resource('survey','XX\Survey\SurveyController')->except([
     'show'
]);

这很好用,但我想要在该页面上创建的项目中有一个页面

Route::resource('survey/{survey_id}','XX\Survey\SurveyQuestionController');

这是我想要的路线;

abc.com/survey/ // <== 这是调查列表页面;我们可以在页面中列出项目、创建项目、编辑项目、删除项目和

abc.com/survey/survey_id // <== 这是调查页面,该页面将包含调查问题。我们可以在页面

中列出项目、创建项目、编辑项目、删除项目

这是我的错误截图:

然后使用路由组,因为它允许您在大量路由之间共享路由属性,例如中间件,而无需在每个单独的路由上定义这些属性。 https://laravel.com/docs/8.x/routing#route-groups

你试过这样的东西吗?

Route::resource('/survey/{survey}/survey_questions', 'XX\Survey\SurveyQuestionController'); 

这将创建以下路线

  1. 索引:获取abc.com/survey/1/survey_questions
  2. 创建:GET abc.com/survey/1/survey_questions/创建
  3. 商店:POSTabc.com/survey/1/survey_questions
  4. 显示:获取abc.com/survey/1/survey_questions/1
  5. 编辑:获取 abc.com/survey/1/survey_questions/1/编辑
  6. 更新:PUT abc.com/survey/1/survey_questions/1
  7. 摧毁:DEL abc.com/survey/1/survey_questions/1

如果需要,您可以传递一些额外的参数来格式化 url 和命名路由

Route::resource('/survey/{survey}/questions', 'XX\Survey\SurveyQuestionController', [
    'as' => 'survey',
    'parameters' => ['questions' => 'surveyQuestion']
]); 

这样你的路线将是

  1. 索引:获取 abc.com/survey/1/questions -> survey.questions.index
  2. 创建:获取 abc.com/survey/1/questions/创建 -> survey.questions.create
  3. 商店:POST abc.com/survey/1/questions -> survey.questions.store
  4. 显示:获取 abc.com/survey/1/questions/1 -> survey.questions.show
  5. 编辑:GET abc.com/survey/1/questions/1/edit -> survey.questions.edit
  6. 更新:PUT abc.com/survey/1/questions/1 -> survey.questions.update
  7. 摧毁:DEL abc.com/survey/1/questions/1 -> survey.questions.destroy