2010-10-27 146 views
1

我使用的帐户控制器没有自己的表,但使用用户模型。Cakephp验证

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

查看

<?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

尝试debug()荷兰国际集团的内容$this->validationErrors在您的视图中,以及在您的控制器$this->data刚刚提交表单。这应该会给你更多的信息。

我怀疑你的问题是蛋糕是基于错误的模型建筑形式输入 - 建筑形式字段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->flash();

请注意,不管手册如何,它都会返回,而不是回声。我记录了一段时间,它已在1.3手册中更改,但不是1.2。

1

嗨,你是谁问
如果你想显示错误消息,从的usermodel的validate返回
所以,你也可以在波纹管输入形式的密码添加一行代码

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

祝你好运!