我刚刚开始使用cakePHP,并且目前情况并不如此顺利。从cakePHP中的控制器输出超链接
我有一个处理确认用户电子邮件的控制器。在注册时,用户在链接中发送带有确认码的电子邮件。根据他们给出的确认码,控制器给出不同的文本响应。其中一个响应包括一个超链接,以便登录。
我试图使用Html帮助程序,但尽管我已将它加载到类顶部的$ helpers中,但我只能使其工作如果我然后使用App :: import,然后实例化它。
这一切似乎矫枉过正,只是做一个超链接!我需要加载多少次同一班?
无论从网络上看,它总是告诉我在控制器中使用助手是一个糟糕的主意,但我还应该如何获得链接?
所以不得不
var $helpers = array('Html');
在控制器的顶部,和:
if (isset($this->User->id)) { // Check the user's entered it right
// Do some stuff to remember the user has confirmed
// This is to load the html helper - supposedly bad form, but how else do I make the link?
App::import('Helper', 'Html');
$html = new HtmlHelper();
$this->set('message', __("Your email address has been confirmed.", TRUE)." ".$html->link(__("Please log in", TRUE), array('controller' => "users", 'action' => "login")));
} else {
$this->set('message', __("Please check your mail for the correct URL to confirm your account", TRUE));
}
在控制器的确认方法和
<div>
<?php echo $message;?>
</div>
在视图中输出
所得消息
当然我会在某个地方出错 - 任何人都可以解释一下吗?
Aaah,好的!这更有意义。这是将全部用户数据传递给我没有得到的观点的想法。我认为这个看法更加“愚蠢”。感谢您的清晰插图。 – Hippyjim 2010-09-28 07:09:39
我认为$ this-> User是查询结果而不是模型。你的权利,你应该做$ user = $ this-> User-> find()然后$ this-> set('user',$ user),因此用户将是视图中的结果数组。 – 2010-09-29 06:57:31
是的,我理解它是数据,而不是模型 - 通过模型可能会冒各种令人讨厌的循环引用的风险,对吧? (更不用说打破MVC) – Hippyjim 2010-09-30 12:40:22