cakephp未验证密码字段

cakephp未验证密码字段,php,validation,cakephp,passwords,cakephp-1.3,Php,Validation,Cakephp,Passwords,Cakephp 1.3,我有一个页面,用户可以更改他的密码。表单包含3个字段:当前密码(旧密码)、新密码(密码)和新密码确认(密码确认)。问题是,虽然在模型定义中禁止使用空白字段,但字段未被验证,并且允许使用空白字段。我不知道为什么,我在注册中有一个类似的表单,但该表单运行良好,并显示这些字段的验证错误 当我显示$this->User->validationErrors时,数组为空。但是验证已经完成,我有用户名验证,它只在用户创建时激活,当我为所有user表单(包括此更改密码表单)激活它时,验证错误会相应地显示在此处

我有一个页面,用户可以更改他的密码。表单包含3个字段:当前密码(旧密码)、新密码(密码)和新密码确认(密码确认)。问题是,虽然在模型定义中禁止使用空白字段,但字段未被验证,并且允许使用空白字段。我不知道为什么,我在注册中有一个类似的表单,但该表单运行良好,并显示这些字段的验证错误

当我显示
$this->User->validationErrors
时,数组为空。但是验证已经完成,我有用户名验证,它只在用户创建时激活,当我为所有
user
表单(包括此更改密码表单)激活它时,验证错误会相应地显示在此处

<?php echo $this->Form->create('User');?>
    <fieldset>
        <legend><?php __('Change password'); ?></legend>
    <?php
        echo $this->Form->input('User.old_pass', array('type' => 'password',
            'label' => __('Current password', true)));
        echo $this->Form->input('User.pass', array( 'type' => 'password',
            'label' => __('New password', true)));
        echo $this->Form->input('User.pass_confirm', array('type' => 'password',
            'label' => __('Repeat password', true)));           
    ?>
    </fieldset>
<?php echo $this->Form->end(__('Submit', true));?>
顺便说一句,当我取消注释
时,返回falsevalidate_password
函数中的code>行中,不会发生任何事情,因此根本不会调用该方法

我正在使用
$this->user->save($data)
保存用户,
$data
变量包含我要以propper格式保存的数据,并且工作正常。唯一的问题是没有验证字段

编辑:


尝试向validate_password方法添加参数:

function validate_password($check){

是否使用字段参数?您需要向我们展示控制器的操作

我猜:

$this->save($this->data, true, FIELDS);
字段仅限于某些值(这将忽略密码输入)

顺便说一下:

if ( !empty($this->data['User']['pass_confirm']) ) { }

这里是短的并且足够了

这没有改变任何东西,当我尝试调试($check)
时,没有显示任何内容,因此变量为空。顺便说一句,您遇到的问题与大多数人相同。这就是为什么我在几周前为这个问题开了一张罚单。您忘记了每个规则中的“last”=>true,这可能会导致奇怪和意外的行为:)这个问题解决了吗?考虑接受以上任何一个答案。也可以考虑使用像我这样的行为(1.3或2 x):你有没有发现这个问题的原因?我也有同样的问题。奇怪的是,当我在保存失败后对控制器中的validationErrors执行调试调用时,change_password操作显示保存了一些错误。但是,表单中仍然没有显示任何内容。请稍候。调用
save
时,您只需输入用户id和完整密码。您没有传入
pass
pass\u confirm
。这就是为什么它没有针对任何东西进行验证的原因吗?
$this->save($this->data, true, FIELDS);
if ( !empty($this->data['User']['pass_confirm']) ) { }