您好我在视图中检索URL段CAkephp3时遇到了麻烦。我想从当前网址获取ID。
让我们说我的网址是http://localhost/admin/financial_agreements/edit/50 我想重定向到http://localhost/admin/financial_agreements/do_print/50 简单地说:
var urlPrint = "<?=$this->Url->build(['controller' => 'financial_agreements', 'action' => 'do_print', 'I NEED ID FROM CURRENT'], true)?>";
我尝试调试
<?=debug($this->Url->build()); die();?>
但它的产品:admin / financial_agreements / edit / 50
什么是50?我需要在我的&#34; url-&gt; build&#34; urlPrint 抱歉英语不好。Anyhelp会很感激。 感谢。
答案 0 :(得分:3)
您可以使用Request对象在视图中获取请求数据(包括url参数)。
在您的观点中尝试此操作:
$this->request->getParam('pass') //CakePHP 3.4+
$this->request->params['pass'] // CakePHP 3.3
这将返回在URL中的操作名称之后传递的所有非命名参数的数组。示例:/mycontroller/myaction/param1/param2
。因此,在此示例中,$this->request->getParam('pass')
将生成如下数组:[0 => 'param1', 1 => 'param2']
。
奖励回答:您还可以在网址中“命名”参数,例如:/mycontroller/myaction/some_name:some_value
。要检索这种命名参数,你可以使用相同的技巧:$this->request->getParam('named')
(使用参数'named'而不是'pass')。
更多信息: https://book.cakephp.org/3.0/en/controllers/request-response.html https://book.cakephp.org/3.0/en/development/routing.html#passed-arguments
答案 1 :(得分:2)
假设您的编辑功能遵循标准做法,您将拥有以下内容:
public function edit($id) {
$financialAgreement = $this->FinancialAgreements->get($id);
...
$this->set(compact('financialAgreement'));
}
然后在edit.ctp
中,您可以非常简单地将当前记录的ID设为$financialAgreement->id
,这样您的网址就会生成
$this->Url->build(['controller' => 'financial_agreements', 'action' => 'do_print', $financialAgreement->id], true)