2016-11-20 31 views
1

我需要发送带有链接的文本电子邮件,供用户单击。这是用户验证电子邮件。我遇到的问题是URL助手不断逃离角色。我觉得我已经尝试了以下各种可能的组合,但无济于事。在CakePHP中转义URL Helper

echo $this->Url->build([ 
    "controller" => "Users", 
    "action" => "verify", 
    "?" => ['email' => $email, 'hash' => $hash] 
    ],[ 
    "escape" => false, 
    "fullBase" => true 
    ]); 

这导致http://www.mydomain.co.uk/users/verify?email=chris%40domain.co.uk&hash=b56a4eea3b495db226888f2f89e7678f的 '@' 和 '&' charachters是beeing逃脱哪里。

此问题的另一个问题是,蛋糕不能访问哈希变量,但它可以电子邮件,即。

echo $this->request->query('hash') //doesn't print anything 
echo $this->request->query('email') //prints email with the @ symbol 
+1

特别是你使用的是什么版本的蛋糕?该文档指出传递数组作为第二个参数仅在3.3.5中添加。 –

+0

@GregSchmidt我正在使用3.2.13。这是否意味着在3.3.5之前,你不能在构建函数中转义特殊字符?如果是这样,你知道另一种方式来做到这一点吗? – ChrisBull

回答

0

感谢Greg Schmidt指出版本不一致。

仅供参考;您只能使用CakePHP 3.3.5及更高版本的转义(截至2016年11月)。

我用htmlspecialchars_decode($这个 - > URL->建立())来解决这个问题