Laravel路由:如何传递参数到控制器(不通过URL)


Laravel routing: how to pass parameter to controller (not via URL)?

我有两条路由:A/{param}/CB/{param}/C。我还有一个方法为:

的控制器
public function index($param, $param1 = false)
{
    //...
}

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

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

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

捕获。

url:

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

,
控制器:

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

,

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

URL:

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

路线:

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

控制器:

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