我正在使用一个帐户控制器,它没有自己的表,但使用用户模型。
除非我验证任何表格,否则一切正常。它表示验证失败(当我尝试验证验证失败时),但不会将错误抛出字段
查看
<?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');
}
答案 0 :(得分:3)
在表单提交后,尝试debug()
您视图中$this->validationErrors
的内容以及控制器中的$this->data
。这应该可以为您提供更多信息。
我怀疑你的问题是Cake正在根据错误的模型构建表单输入 - 为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');
答案 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');
?>
祝你好运!