我剛剛開始使用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