嵌套资源路由

时间:2014-12-27 18:06:36

标签: php laravel laravel-routing

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

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

我允许/diagrams/1/steps/3等触发show($diagramId, $stepID)的网址。 我想获得属于ID为1的图表的所有步骤:/diagrams/1/steps

我如何实现这一目标?

2 个答案:

答案 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
    );
}