【问题标题】:accessing validation rules in associated model (CakePHP)访问关联模型中的验证规则(CakePHP)
【发布时间】:2010-12-29 05:05:12
【问题描述】:

您好,我一直在尝试从我的主控制器访问关联模型的验证规则。它似乎不起作用,我无法找到任何关于此的参考。这是我想要做的:

用户控制器截图:

$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 中给我空白的表单数据。我认为这可能是一个比我想象的更简单的问题。

【问题讨论】:

  • 您能在您的validates() 函数之前使用debug($this->data) 并发布结果吗?
  • 全是空白测试空白检查。数组 ( [用户] => 数组 ( [fname] => [mname] => [lname] => ) )

标签: cakephp cakephp-1.3


【解决方案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

如果您进一步解释您要对表单执行的操作,我可以提供更多帮助。

【讨论】:

  • 你是圣人!我是一个白痴。我不敢相信我没有意识到我的输入名称已关闭!谢谢你
  • 哦,发生的事情是我正在处理用户控制器中的所有控制器任务,但验证将在将保存几页的配置文件中使用的变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多