Laravel路由:如何将参数传递给控制器​​(不是通过URL)?

时间:2014-08-12 16:02:05

标签: php laravel laravel-4 controller routing

我有两条路线:A/{param}/CB/{param}/C。我还有一个方法控制器:

public function index($param, $param1 = false)
{
    //...
}

A/{param}/C的情况下,我只传递一个参数 - 一个在URL中指定,并且该函数使用默认值作为第二个参数。在第二条路线的情况下,我想传递true作为第二个参数。由于未在URL中指定,如何将其传递给函数?

1 个答案:

答案 0 :(得分:2)

如果我理解正确,不使用$ _POST,你就无法传递参数而不会出现在URI的某个地方(在设置会话变量之外,我不建议这样做)

另一个选项可能是将其作为查询字符串参数传递。它仍然会在网址中,但不一定会被路由模式所捕获

<强>网址:

A/{param}/C
B/{param}/C?param1=true

-
控制器:

public function index($param)
{

   $param1 = Request::query('param1'); // if not present false, if present, {value}

}

-

或者,如果您想要一个友好的网址,您可以在第二个参数后面添加一个问号,表示它可能存在,也可能不存在。这将匹配以下两个网址

<强> URL:

A/{param}/C
B/{param}/C/true

<强>路线:

Route::get('B/{param}/C/{param1?}', 'YourController@index');

<强>控制器:

public function index($param, $param1 = false)
{
   //
}