如何从嵌套资源触发index
方法?
例如,我有路线:
Route::resource('diagrams.steps', 'DiagramStepsController');
我允许/diagrams/1/steps/3
等触发show($diagramId, $stepID)
的网址。
我想获得属于ID为1的图表的所有步骤:/diagrams/1/steps
。
我如何实现这一目标?
答案 0 :(得分:2)
您发布的路线定义:
Route::resource('diagrams.steps', 'DiagramStepsController');
应生成以下路线:
+--------+-------------------------------------------------+------------------------+--------------------------------+----------------+---------------+
| Domain | URI | Name | Action | Before Filters | After Filters |
+--------+-------------------------------------------------+------------------------+--------------------------------+----------------+---------------+
| | GET|HEAD diagrams/{diagrams}/steps | diagrams.steps.index | DiagramStepsController@index | | |
| | GET|HEAD diagrams/{diagrams}/steps/create | diagrams.steps.create | DiagramStepsController@create | | |
| | POST diagrams/{diagrams}/steps | diagrams.steps.store | DiagramStepsController@store | | |
| | GET|HEAD diagrams/{diagrams}/steps/{steps} | diagrams.steps.show | DiagramStepsController@show | | |
| | GET|HEAD diagrams/{diagrams}/steps/{steps}/edit | diagrams.steps.edit | DiagramStepsController@edit | | |
| | PUT diagrams/{diagrams}/steps/{steps} | diagrams.steps.update | DiagramStepsController@update | | |
| | PATCH diagrams/{diagrams}/steps/{steps} | | DiagramStepsController@update | | |
| | DELETE diagrams/{diagrams}/steps/{steps} | diagrams.steps.destroy | DiagramStepsController@destroy | | |
+--------+-------------------------------------------------+------------------------+--------------------------------+----------------+---------------+
请注意,第一条路线是diagrams/{diagrams}/steps
,它会调用控制器的index
方法,这就是您所要求的。
答案 1 :(得分:0)
Route::resource('diagrams.steps', 'DiagramStepsController');
给我GET | HEAD图表/ {图表} /步骤路线。 它使用参数匹配图id {{}}调用索引方法。 因此,为了获得属于导航图的所有步骤,我必须按如下方式编写方法:
public function index($id)
{
$steps = Step::where('diagram_id', '=', $id)->get();
return Response::json(
array(
'error' => false,
'steps' => $steps
),
200
);
}