如何在CakePHP3中从url访问参数

如何在CakePHP3中从url访问参数,cakephp,cakephp-3.2,Cakephp,Cakephp 3.2,在cakephp 3的烹饪书中。给出了使用 echo $this->Url->build([ "controller" => "Posts", "action" => "view", "foo" => "bar" ]); 将输出为 /posts/view/foo:bar 如何访问操作中的foo:bar,并将其保存在变量$foo?食谱中有一个错误,所以我打开了罚单 如果你使用这个代码 echo $this->Url->build

在cakephp 3的烹饪书中。给出了使用

echo $this->Url->build([
    "controller" => "Posts",
    "action" => "view",
    "foo" => "bar"
]);
将输出为

/posts/view/foo:bar

如何访问操作中的
foo:bar
,并将其保存在变量
$foo

食谱中有一个错误,所以我打开了罚单

如果你使用这个代码

echo $this->Url->build([
    "controller" => "Posts",
    "action" => "view",
    "foo" => "bar"
]);
你会得到这样一个url

/posts/view/?foo=bar
本手册解释了如何访问GET参数

你能行

$this->request->query('foo');

第一个是空安全的,这意味着如果未设置“
foo
”参数,您只需获得
null
,而不是错误

编辑

在3.4.0之后,新语法是

$this->request->getQuery('foo');

或在一行中以数组形式获取所有参数:

$params = $this->request->getQueryParams();

CakePHP 3.*版本可以使用请求查询:

$this->request->getQuery('utm_source')

你确定你在用cake3吗?蛋糕3将返回
/posts/view/?foo=bar
。似乎是一个cake2应用程序
$var=$this->request->param('foo')
@arilia检查一下,我想这是文档中的一个错误,或者是最近更改的错误。你试过你的代码了吗?我刚刚在cake3.2.13应用程序中尝试了您的精确代码,它给出了预期的
/posts/view/?foo=bar
。总之@jacekbudzyñski的评论是正确的
$this->request->getQuery('utm_source')