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

Php Laravel路由:如何将参数传递给控制器(而不是通过URL)?,php,laravel,laravel-4,controller,routing,Php,Laravel,Laravel 4,Controller,Routing,我有两条路线:A/{param}/C和B/{param}/C。我还有一个控制器,其方法如下: public function index($param, $param1 = false) { //... } 在A/{param}/C的情况下,我只传递一个参数——URL中指定的一个参数,函数使用默认值作为第二个参数。对于第二个路由,我希望传递true作为第二个参数。由于它没有在URL中指定,如何将其传递给函数?如果我理解正确,如果不使用$\u POST,您将无法在URI中的某个位置传递参

我有两条路线:
A/{param}/C
B/{param}/C
。我还有一个控制器,其方法如下:

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

A/{param}/C
的情况下,我只传递一个参数——URL中指定的一个参数,函数使用默认值作为第二个参数。对于第二个路由,我希望传递
true
作为第二个参数。由于它没有在URL中指定,如何将其传递给函数?

如果我理解正确,如果不使用$\u POST,您将无法在URI中的某个位置传递参数(在设置会话变量之外,我不建议这样做)

另一个选项是将其作为查询字符串参数传递。它仍然会出现在url中,但不一定会出现在路由模式中

URL:

A/{param}/C
B/{param}/C?param1=true
A/{param}/C
B/{param}/C/true
Route::get('B/{param}/C/{param1?}', 'YourController@index');
public function index($param, $param1 = false)
{
   //
}
--
控制器:

public function index($param)
{

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

}
--

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

网址:

A/{param}/C
B/{param}/C?param1=true
A/{param}/C
B/{param}/C/true
Route::get('B/{param}/C/{param1?}', 'YourController@index');
public function index($param, $param1 = false)
{
   //
}
路线:

A/{param}/C
B/{param}/C?param1=true
A/{param}/C
B/{param}/C/true
Route::get('B/{param}/C/{param1?}', 'YourController@index');
public function index($param, $param1 = false)
{
   //
}
控制器:

A/{param}/C
B/{param}/C?param1=true
A/{param}/C
B/{param}/C/true
Route::get('B/{param}/C/{param1?}', 'YourController@index');
public function index($param, $param1 = false)
{
   //
}

所以我不能在数组中传递它('as'=>'…','uses'=>'MyController@index“,”param1'=>true)或任何其他方式?在使用
index
方法对这两种方法都不适用。您可以使用
Route::get('A/{param}/C','YourController@index');
其中
$param1
设置为
false
,然后第二个路由指向另一个方法
route::get('B/{param}/C','YourController@index2');
其中
$param1
设置为true。为了保持代码干燥,您可以在
index2
中调用
index
,传入
true
return$this->index($param,true),只需一行代码即可