如何获得段URL cakephp 3

时间:2017-12-09 04:47:19

标签: php cakephp cakephp-3.x

您好我在视图中检索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会很感激。 感谢。

2 个答案:

答案 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)