访问关联模型中的验证规则(CakePHP)
您好,我一直在尝试从主控制器访问关联模型的验证规则。它似乎不起作用,我还没有找到任何关于这方面的参考资料。以下是我试图做的: 用户控制器剪报:访问关联模型中的验证规则(CakePHP),cakephp,cakephp-1.3,Cakephp,Cakephp 1.3,您好,我一直在尝试从主控制器访问关联模型的验证规则。它似乎不起作用,我还没有找到任何关于这方面的参考资料。以下是我试图做的: 用户控制器剪报: $this->User->TalentProfile->set( $this->data ); if ($this->User->TalentProfile->validates()) { //it always validates and doesn't seem to see model's vali
$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中给了我空白。我认为这可能是一个比我想象的更简单的问题。通过在
TalentProfile
模型中设置$validate数组,您需要以下格式的数据:
Array(
[TalentProfile] => Array(
[first_name] =>
)
)
关于如何工作的一点解释:
在调用$this->User->TalentProfile->validates()
和$this->TalentProfile->validates()
中,您正在使用TalentProfile
模型中的验证方法。这意味着CakePHP将根据该模型中的验证规则验证您的输入数据,因此它希望在数组中设置TalentProfile
键(如果没有设置,则会安静地消失)
在$validates
数组中,您已经为名为first\u name
的键设置了验证规则。CakePHP将此键作为从表单输入的字段名
现在,您将输入作为fname
而不是first\u name
。您的输入也与用户
模型关联,而不是人才档案
如果您进一步解释您试图对表单执行的操作,我可以提供更多帮助。在您的
validates()函数和发布结果之前,是否可以使用debug($this->data)
?测试空白检查都是空白的。数组([User]=>Array([fname]=>[mname]=>[lname]=>)你是圣人!我是个白痴。我真不敢相信我竟然没有意识到我的输入名称被关闭了!谢谢哦,我正在处理用户控制器中的所有控制器任务,但要根据将在中保存多个页面的配置文件中使用的变量进行验证。