как отобразить встроенные сообщения об ошибках проверки CakePHP?

Я пытаюсь использовать встроенные функции проверки cakePHP для моей страницы регистрации/входа.

<?php
class User extends AppModel
{
    var $name = 'User';
    var $validate = array(
                          'name' => VALID_NOT_EMPTY,
                          'password' => VALID_NOT_EMPTY,
                          'email_id' => VALID_EMAIL
                         );
}

У меня нет отдельного файла просмотра для регистрации или входа. У меня есть код регистрации и входа в приложение в главном контроллере и представления в одном файле index.ctp. Если регистрация или логин действительны, страница перенаправляется на домашнюю страницу главного контроллера.

class UsersController extends AppController 
{
    var $name = 'Users';
    var $helpers = array('Html', 'Form' );

    function register()
    {
     if (!empty($this->data))
      {
        if ($this->User->save($this->data))
        {
          $this->Session->setFlash('Your registration information was accepted.');
          $this->redirect('/main/home');
        }

      }
    }
 }

Индекс.ctp

<p>Please fill out the form below to register an account.</p>
<?php 
      echo $form->create('User', array('action' => 'register'));
      echo $form->input('name');
      echo $form->input('email_id');
      echo $form->input('password');
      echo $form->end('Register');
?>

<h3>Login</h3>
<?php
      echo $form->create('User',array('action'=>'login'));
      echo $form->input('email_id');
      echo $form->input('password');
      echo $form->end('Login');
?>

Вот почему пользовательские сообщения об ошибках не отображаются. Потому что, если у меня есть отдельный файл представления для модуля регистрации, я получаю пользовательские сообщения.

Но мне не нужен отдельный файл просмотра реестра и отдельный файл просмотра входа в систему. Я хочу иметь обе функции в индексном файле основного контроллера. Не могли бы вы помочь мне?

ИЗМЕНИТЬ 1

Если я использую рендеринг, это то, что я получаю в браузере.

Ваша регистрация не удалась.

не обнаружена

Ошибка: Запрошенный адрес «/users/register» не найден на этом сервере.

Это функция регистрации в главном контроллере:

function register()
    {
      if (!empty($this->data))
      {
        if ($this->User->save($this->data))
        {
          $this->Session->setFlash('Your registration information was accepted.');
          $this->render('home');
        }
        else
        {
            $this->Session->setFlash('Your registration failed.');
            $this->render('index');
        }

      }
    }

person Angeline    schedule 30.07.2009    source источник


Ответы (1)


Может возникнуть конфликт, потому что вы создаете две формы, использующие одну и ту же модель. Если вы закомментируете форму входа, появятся ли тогда сообщения об ошибках?

person MSR    schedule 30.07.2009
comment
Сообщения об ошибках отображаются только тогда, когда у меня есть отдельный файл register.ctp в папке views/users. Если я перенаправляю элемент управления на главную страницу, когда регистрация не удалась, я получаю сообщение Session setFlash, но не сообщения об ошибках. Сообщения об ошибках отображаются только при наличии отдельного файла представления для действия регистрации. - person Angeline; 31.07.2009
comment
Сообщения проверки загружаются обратно в представление и не сохраняются в сеансе, в отличие от setFlash. Если вы перенаправите, вы фактически потеряете сообщения об ошибках. Вам может понадобиться использовать $this-›render('index') в контроллере для метода регистрации, поэтому вам не нужно перенаправление. - person MSR; 31.07.2009