0

我想要以下网址:

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) {
        //
    }
}
4

2 回答 2

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');

路由到操作在控制器路由的末尾,就在CLI 路由测试部分之前进行了介绍。通配符对操作的作用与对匿名函数的作用相同。

于 2013-05-07T12:02:59.803 回答
0

Laravel 允许您使用嵌套资源。在您的情况下,您可以在 routes.php 中包含以下内容

Route::resource('question', 'QuestionController');
Route::resource('question.choices', 'ChoicesController');

然后在您的 ChoicesController 中确保同时传入 question_Id 和 choice_Id

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

php artisan routes
于 2013-05-07T07:18:22.093 回答