将来自routes.php的数据传递给Laravel中的控制器

时间:2014-09-05 10:41:30

标签: laravel laravel-4 laravel-routing

我正在尝试在Laravel中创建一个路由,以获取动态URL以加载特定的控制器操作。我可以使用以下代码将其路由到控制器:

Route::get('/something.html', array('uses' => 'MyController@getView'));

我无法弄清楚我是如何将这条路径中的变量传递给控制器​​的。在这种情况下,我想将id值传递给控制器​​操作。

Laravel有可能吗?还有另一种方法吗?

1 个答案:

答案 0 :(得分:1)

您没有向我们提供足够的信息,因此您需要问自己两个基本问题:这些信息来自哪里?您是否可以在控制器内访问此信息而无需通过routes.php文件传递?

如果您要在'edit.php'文件中以某种方式生成此信息:

$information = WhateverService::getInformation();

你不能把它传递给你的控制器,因为你的控制器并没有真正在这个文件中被触发,这只是一个可用路由的列表,在某些时候可能会或可能不会被击中。当路线被击中时,Laravel将通过另一个内部服务开火。

但您可能会在控制器中使用相同的代码行:

class MyController extends BaseController {

    function getView()
    {
        $information = WhateverService::getInformation();

        return View::make('myview')->with(compact('information'));
    }

}

在MVC中,控制器用于接收HTTP请求并通过模型(或服务或存储库)生成信息以传递给您的视图,这可以生成新的网页。

如果您的信息中包含此信息并且您希望将其隐藏到您的something.html路线,请使用POST方法而不是GET:

Route::post('/something.html', array('uses' => 'MyController@getView'));

在您的控制器内部通过以下方式接收该信息:

class MyController extends BaseController {

    function getView()
    {
        $information = Input::get('information');    

        return View::make('myview')->with(compact('information'));
    }

}