嵌套资源路由


Nested resource routes

如何从嵌套资源触发index方法?例如,我有路由:

Route::resource('diagrams.steps', 'DiagramStepsController');  

我允许像 /diagrams/1/steps/3 这样的 URL 触发show($diagramId, $stepID).我想获取属于ID 为 1:/diagrams/1/steps 的图表的所有步骤。

我如何实现这一目标?

您发布的路由定义:

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 方法,这就是你所要求的。

Route::resource('diagrams.steps', 'DiagramStepsController');  

给我 GET|头图/{图}/步骤路线。它调用带有参数匹配图表 id 的索引方法:{diagrams}。因此,为了获得属于导航图的所有步骤,我必须编写如下方法:

public function index($id) 
{
    $steps = Step::where('diagram_id', '=', $id)->get();
    return Response::json(
            array(
                'error' => false,
                'steps' => $steps
            ), 
            200
    );
}