CakePHP模型 - > invalidate不显示错误

时间:2011-04-06 16:06:54

标签: validation cakephp

我目前正在对模型的beforeValidate()回调中的表单进行一些额外的验证。

我有以下代码:

function beforeValidate(){
    $i = 0;
    foreach($this->data['CapitalCategory'] as $capital_category){
        if(!empty($capital_category['value'])){
            $this->invalidate('CapitalCategory.'.$i.'.points', 'error!');   
                return false;
            }

        $i++;
    }
    return true;
}

我调试了所有内容,如果值存在,它会返回false。但是,表单重新加载,并且点输入下方没有显示任何消息!此外,如果我调试validationErrors,则数组包含需要显示的错误。 可能是什么问题?

感谢任何帮助!

修改

这是我构建输入的方式:

echo $this->Form->input('CapitalCategory.'.$i.'.value', array('label' => $category['Category']['name'], 'type' => 'text'));
        echo $this->Form->input('CapitalCategory.'.$i.'.points', array('label' => 'Puncte', 'type' => 'text'));

我认为一个问题可能是我正在使用CapitalModel,除了CapitalModel的一些字段之外,我还使用了其相关模型CapitalCategorieModel中的几个字段。这可能是未将验证错误绑定到字段的问题吗?如果是,我该如何解决?

3 个答案:

答案 0 :(得分:1)

嗯,诚然,我不知道为什么它不适合你。根据我的理解,它应该是做蛋糕和魔术#39;事情。但是当我尝试验证和cakephp没有神奇地显示错误时,我发生了类似这样的事情。我通过使用FormHelper类的另一个函数解决了这个问题。

$this->Form->error( 'field' );

我再次完全承认这并没有直接回答你的问题,但这至少是处理正在发生的事情的蛋糕方式。哦,如果没有错误,上面的函数返回null,所以你可以把它放在你想要显示的消息的任何地方。

如果你想查看,这是API中函数的cake链接。 FormHelper API 2.4

答案 1 :(得分:0)

可能这是因为CakePHP不知道将错误消息放在何处

致电$this->invalidate ( $name );$name必须与您创建的字段(输入)的名称相匹配..

那么,你能告诉我你是如何创建表单输入(字段)的吗?

答案 2 :(得分:0)

确保您不会混淆model :: $ validationErrors和Controller :: $ validationError。他们是不同的,不分享神奇的纽带。一个由模型方法填充,另一个由控制器方法填充。