刚刚从1.3升级到2.0.3,我正在尝试迁移所有更改。我注意到以下行

echo $this->Html->link('Quote', array('controller'=>'crm_quotes', 'action'=>'index', $lead['id'].'/'.$crmContact['CrmContact']['id']), null);

构建URL "/crm_quotes/index/15/21". 。当我单击链接时,我将其带到URL:

"/crm_quotes/index/15%2F212

因此,它正在用HTML代替角色 # 但这最终打破了链接。

当我手动编辑正确的URL时:

"/crm_quotes/index/15/21"

页面加载。

有人可以启发我吗?我应该使用 url 功能而不是链接?

我有很多页面需要在URL中传递的多个参数。我正在使用命名的参数,但是在阅读了Mark Story的一些评论后,我决定停止命名参数,因为他暗示了他们可能从未来版本中删除。

有帮助吗?

解决方案

以正确的(蛋糕)方式传递额外参数。蛋糕编码任何 / 在未具体设置的URL中;我还没有发现如何防止这种情况。

echo $this->Html->link('Quote', array('controller'=>'crm_quotes', 
                              'action'=>'index', 
                               $lead['id'],
                               $crmContact['CrmContact']['id']), null);

其他提示

作为问题的答案:只需将串联的'/'取出并将ID作为该数组中的单独值传递。它应该自动将它们向前砍伐。

echo $this->Html->link('Quote', array(
    'controller'=>'crm_quotes', 
    'action'=>'index', 
    $lead['id'],
    $crmContact['CrmContact']['id']
));

关于编码的主题:我认为这里的问题是,它不知道您打算将其视为URL的有效部分,而不仅仅是某些文本。默认行为是编码储备字符以避免此问题,因此将其编码为URL。

这是一个 类似的问题, ,以及关于 URL通常编码.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top