Laravel 4 - 隐式控制器中的URI参数

时间:2014-10-28 00:40:52

标签: laravel laravel-4 parameters controller routes

如何在隐式控制器内的方法中获取URI参数?

首先,我定义一个基本路线:

Route::controller('users', 'UserController');

然后,

class UserController extends BaseController {

    public function getIndex()
    {
        //
    }

    public function postProfile()
    {
        //
    }

    public function anyLogin()
    {
        //
    }

}

如果我想在URI中传递aditional参数,例如http://myapp/users/{param1}/{param2},我如何在尊重方法中阅读param1param2?在此示例中,getIndex()

2 个答案:

答案 0 :(得分:7)

如果你想拥有像http://myapp/users/{param1}/{param2}这样的网址  你需要在你的控制器中拥有这样的:

Route::get('users/{param1}/{param2}', 'UserController@getIndex');

并访问它:

class UserController extends BaseController {

    public function getIndex($param1, $param2)
    {
        //
    }

}

但是,嘿,你也可以这样做,路线也一样:

class UserController extends BaseController {

    public function getIndex()
    {
        $param1 = Input::get('param1');
        $param2 = Input::get('param2');

    }

}

但您的网址类似于:http://myapp/users?param1=value&param2=value

答案 1 :(得分:2)

这是一种在模型之间创建类似层次结构的目录的方法(嵌套路由)

假设专辑有图像,我们想要一个专辑控制器(用于检索专辑数据)和一个图像控制器(用于检索图像数据)。

Route::group(array('before' => 'auth', 'prefix' => 'album/{album_id}'), function()
{
    // urls can look like /album/145/image/* where * is implicit in image controller.
    Route::controller('image', 'ImageController');

});

Route::group(array('before' => 'auth'), function()
{
    // urls can look like /album/* where * is implicit in album controller.
    Route::controller('album', 'AlbumController');

});