Вид не отображается правильно - PullRequest
0 голосов
/ 01 августа 2011

Я сейчас изучаю Cake и следую Руководству IBM .Я успешно завершил урок по блогу с сайта с тортом.
Моя проблема в том, что представление Register не отображается.Вместо того, чтобы показывать форму, немедленно выполняется действие register(), и проверка состояния, являются ли параметры формы пустыми, всегда завершается неудачей, поэтому я всегда получаю сообщение об ошибке при регистрации сообщения пользователя.


Файл ctpвыглядит так (не использует помощников):

<form action="/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');
    }
}

1 Ответ

1 голос
/ 01 августа 2011

Попробуйте:

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 должен быть в том случае, если (пользователь сохранен) флэш-память сохранена, иначе флэш-память не сохранена.

...