我使用的账户控制器,其不必须自己的表,但使用用户模型。

所有工作正常除外 - 当我验证的任何形式。它说,验证失败(当我尝试失败验证检查),但犯规扔场下面的错误

查看

<?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');
            }
有帮助吗?

解决方案

尝试debug()ing $this->validationErrors的内容在您的视图,以及$this->data在控制器中只是一个表单提交后。这应该给你更多的信息,从工作。

我怀疑你的问题是蛋糕是基于错误的模型建筑形式输入 - 建设Account.idAccount.password代替User.idUser.password表单字段。 /这是因为FormHelper从控制器获取其默认模型查看它的调用从,而你的情况出现AccountsController

为了生成User.idUser.password域控制器的处理提出希望,你将需要预先User.FormHelper电话。因此:

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

其他提示

你试过:

echo $session->flash();

请注意,无论手册上说,它返回,没有回音。我记录此而回,并且已经在1.3手动改变,但不是1.2。

嗨,你是谁问结果。如果你想显示错误消息,从的usermodel的验证结果返回所以,你可以输入后密码的形式添加一行代码波纹管点击

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

和如果要显示错误消息,通过方法集setFlash结果 你必须重定向页面,然后使用$这 - >会话级>闪存(“闪电名”)的页面要显示它

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

祝你好运!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top