Cakephp验证

时间:2010-10-27 09:47:19

标签: cakephp validation cakephp-1.3

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

除非我验证任何表格,否则一切正常。它表示验证失败(当我尝试验证验证失败时),但不会将错误抛出字段

查看

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

3 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:2)

你试过了吗?

echo $session->flash();

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

答案 2 :(得分:1)

嗨,你问的是谁如果你想显示从UserModel的验证返回的错误信息,那么你可以在输入表格密码后添加行代码

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

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

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