如何显示CakePHP的内置验证错误消息?

时间:2009-07-30 06:55:59

标签: validation 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');
        }

      }
    }
 }

Index.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');
        }

      }
    }

1 个答案:

答案 0 :(得分:0)

可能存在冲突,因为您正在创建两个使用相同模型的表单。如果您注释掉登录表单,那么会显示错误消息吗?