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),只需一行代码即可代码>