访问关联模型中的验证规则(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]=>)你是圣人!我是个白痴。我真不敢相信我竟然没有意识到我的输入名称被关闭了!谢谢哦,我正在处理用户控制器中的所有控制器任务,但要根据将在中保存多个页面的配置文件中使用的变量进行验证。