Laravel noun1 / $ arg1 / noun2 / $ arg2 routing / controller

时间:2013-05-07 06:00:34

标签: laravel laravel-routing

我想要以下网址:

http://localhost/question/1/choices/

并且可选/ question / 1 / choices / 3

其中1是question_id,3是choice_id。

我怎样才能在Laravel中做到这一点?

由于

更新 我想我可以通过类似

的方式实现这一目标
Route::get('questions/(:num)/choices/(:num)')

但是如何将其链接到控制器

Class Questions extends Base_Controller {
    public static $restful = TRUE;
    public function get_choices($question_id, $choice_id) {
        //
    }
}

2 个答案:

答案 0 :(得分:1)

你会想要一个Questions_Controller(请记住_Controller,这很重要),如下:

// controllers/questions.php
class Questions_Controller extends Base_Controller {
    public $restful = true;
    public function get_choices($question_id, $choice_id)
    {
        // Use $question_id and $choice_id
    }
}

您的路线看起来像controller@action,所以......

// routes.php
Route::get('questions/(:num)/choices/(:num)', 'questions@choices');

Controller RoutingCLI Route Testing部分之前的{{3}}结尾处介绍了路由到行动。通配符与执行匿名函数的操作相同。

答案 1 :(得分:0)

Laravel允许您使用嵌套资源.. 在您的情况下,您可以在routes.php

中包含以下内容
Route::resource('question', 'QuestionController');
Route::resource('question.choices', 'ChoicesController');

然后在你的ChoicesController中确保传入question_Id和choice_Id

您可以通过运行来检查是否所有内容都已正确路由:

php artisan routes