【问题标题】:Cakephp ValidationCakephp 验证
【发布时间】:2010-10-27 09:47:18
【问题描述】:

我正在使用一个没有自己的表但使用用户模型的帐户控制器。

除了验证任何表单时,一切正常。它说验证失败(当我尝试验证检查失败时)但不会在字段下方抛出错误

查看

<?php echo $this->Form->input('id'); ?>
              <label for="UserPassword">New Password:</label>
              <?php echo $this->Form->text('password', array('type' => 'password', 'value' => 'harsha')); ?><em>Password must be min 6 characters.</em> <?php echo $form->error('password'); ?>

控制器动作

            if($this->User->saveField('password', $this->data['User']['password'], array('validate' => 'first'))) {
                $this->Session->setFlash('Password has been changed.', 'flash-success');
            } else {
                $this->Session->setFlash('There was some problem with our system. Please try after some time.', 'flash-warning');
            }

【问题讨论】:

    标签: cakephp validation cakephp-1.3


    【解决方案1】:

    在提交表单后尝试在您的视图中debug() 输入$this-&gt;validationErrors 的内容,以及在您的控制器中输入$this-&gt;data。这应该会为您提供更多信息。

    我怀疑您的问题是 Cake 基于错误的模型构建表单输入 - 为 Account.idAccount.password 而不是 User.idUser.password 构建表单字段。这是因为 FormHelper 从调用它的控制器/视图中获取其默认模型,在您的情况下显示为 AccountsController

    为了生成控制器提交处理所期望的User.idUser.password 字段,您需要在FormHelper 调用中添加User.。因此:

    $this->Form->input('User.id');
    $this->Form->text('User.password');
    

    【讨论】:

      【解决方案2】:

      你试过了吗:

      echo $session-&gt;flash();

      请注意,无论手册说什么,它都会返回,而不是回显。我前段时间记录了这个,它在 1.3 手册中已更改,但不是 1.2。

      【讨论】:

        【解决方案3】:

        您好,请问
        如果您想显示从 UserModel 的验证返回的错误消息
        因此您可以在输入表单密码后添加以下行代码

          <?php 
              if ($this->Form->isFieldError('password')) { 
               echo $this->Form->error('password', array('class' => 'error')); 
            ?>
        

        如果您想显示由 setFlash 方法设置的错误消息
        您必须重定向页面,然后在要显示的页面中使用 $this->Session->flash('flash-name')

           <?php
            //in UsersController
            $this->Session->setFlash('message here', 'flash-name');
            //in view
            echo $this->Session->flash('flash-name');
           ?>
        

        祝你好运!

        【讨论】:

          猜你喜欢
          • 2010-12-10
          • 1970-01-01
          • 1970-01-01
          • 2012-10-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-21
          • 2011-07-07
          相关资源
          最近更新 更多