您好我一直在尝试从我的主控制器访问相关模型的验证规则。它似乎没有工作,我没有找到任何关于此的参考。这是我想要做的:
用户控制器剪辑:
$this->User->TalentProfile->set( $this->data );
if ($this->User->TalentProfile->validates()) {
//it always validates and doesn't seem to see model's validation rules
}
TalentProfile模型片段:
var $validate = array (
'first_name' => array(
'maxLength' => array(
'rule' => array('maxLength', 20),
'message' => 'Can not be longer than 20 characters.',
'last' => true
),
'first_name_not_empty' => array(
'rule' => 'notEmpty',
'message' => 'This field is required',
'last' => true
),
),
);
我还尝试重新包装数组,我的想法是模型名称可能与验证有关:
$this->User->TalentProfile->set( array('TalentProfile',$this->data) ) );
我也试过这个希望,但结果仍然相同:
$this->loadModel('TalentProfile');
$this->TalentProfile->set( $this->data) );
我缺少一些东西。请帮忙!感谢
编辑:
我试图保存表单数据,这在SQL中给我空白。我认为这可能比我想象的更简单。
答案 0 :(得分:1)
通过在TalentProfile
模型中设置$ validate数组,您需要具有以下格式的数据:
Array(
[TalentProfile] => Array(
[first_name] =>
)
)
关于这是如何工作的一点解释:
在致电$this->User->TalentProfile->validates()
和$this->TalentProfile->validates()
中,您正在使用TalentProfile
模型中的验证方法。这意味着CakePHP将根据该模型中的验证规则验证您的输入数据,因此它希望在数组中设置TalentProfile
键(但如果不是,则安静地停止)。
在$validates
数组中,您已为名为first_name
的密钥设置了验证规则。 CakePHP将此键作为从表单输入的字段名称。
目前,您输入的内容为fname
而不是first_name
。您的输入也与User
模型相关联,而非TalentProfile
。
如果您进一步解释您要对表单进行的操作,我可以提供更多帮助。