2011-08-01 85 views
0

我現在正在學習Cake並且正在關注IBM's tutorial。我已經從蛋糕網站成功完成了博客教程。
我的問題是,Register視圖不顯示。不是顯示錶單,而是立即執行register()操作,檢查表單參數是否爲空的條件總是失敗,所以我總是無法註冊用戶消息。查看無法正確顯示


CTP的文件看起來像這樣(它不使用傭工):

<form action="https://stackoverflow.com/users/register" method="post"> 
<p>Please fill out the form below to register an account.</p> 
<label>Username:</label><input name="username" size="40" /> 
<label>Password:</label><input type="password" name="password" size="40" /> 
<label>Email Address:</label><input name="email" size="40" maxlength="255" /> 
<label>First Name:</label><input name="first_name" size="40" /> 
<label>Last Name:</label><input name="last_name" size="40" /> 
<input type="submit" value="register" /> 
</form> 

而且register()動作是:

function register() { 
    if (!empty($this->params['form'])) 
    { 
     if ($this->User->save($this->params['form'])) 
     { 
      $this->flash('Your registration infomration was accepted.', '/users/register'); 
     } 
    } 
    else 
    { 
     $this->flash('There was a problem with your registration', '/users/register'); 
    } 
} 
+0

IMB教程很舊,很可能已經過時了很多東西。 – RichardAtHome

+0

@RichardAtHome:目前,我正在使用發佈在Cake主頁上的東西。你有其他建議嗎? – Shaihi

+0

CakePHP站點上的博客教程是一個很好的開始,通常是最新版本的Cake。 http://book.cakephp.org/view/1528/Blog – RichardAtHome

回答

1

嘗試:

function register() { 
    if (!empty($this->data)) { 
     $this->User->create(); 
     if ($this->User->save($this->data)) { 
      $this->flash('Your registration infomration was accepted.', '/users/register'); 
     } else { 
      $this->flash('There was a problem with your registration', '/users/register'); 
     } 
    } 

} 

最大的區別是使用$this->data而不是$this->params[form],並加入$this->User->create();。另外else語句應該與if(用戶保存)閃存保存,否則閃存不保存。

+0

魔術:)它的作品,現在我會試着去理解爲什麼。謝謝! – Shaihi

+0

看來,我有其他的主要條件殺死了我。當我把它拿出來的時候,表單是正確顯示的,但是如果我把它保留下來(else if(!empty ...),那麼結果頁面就是直接的else語句,或者我應該發佈一個新的問題 – Shaihi

+1

在Shaz的代碼中沒有別的'if(!empty ..)'block –