题
我使用的账户控制器,其不必须自己的表,但使用用户模型。
所有工作正常除外 - 当我验证的任何形式。它说,验证失败(当我尝试失败验证检查),但犯规扔场下面的错误
查看
<?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.id
和Account.password
代替User.id
和User.password
表单字段。 /这是因为FormHelper
从控制器获取其默认模型查看它的调用从,而你的情况出现AccountsController
。
为了生成User.id
和User.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');
?>
祝你好运!
不隶属于 StackOverflow