我目前正在对模型的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中的几个字段。这可能是未将验证错误绑定到字段的问题吗?如果是,我该如何解决?
答案 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。他们是不同的,不分享神奇的纽带。一个由模型方法填充,另一个由控制器方法填充。