在CakePHP

时间:2015-04-27 15:53:40

标签: cakephp

我正在使用CakePHP 2.6.3。

我认为最好用一个例子来解释。

我有一个模型ApplicantApplicant hasMany Reference。大多数情况下,申请人需要两份参考资料,但根据申请表中的其他意见,可能需要第三份参考资料。

我如何要求三个甚至两个参考?似乎没有传递给Reference模型的任何索引键允许我将它链接到它的引用。

在ApplicantsController中

public function add() {
        if ($this->request->is(array('post'))) {
            if (!$this->Applicant->saveAll($this->request->data, array('validate' => 'only'))) {
                // validation failed
            } else {
                if ($this->Applicant->saveAll($this->request->data, array('deep' => true))) {
                    // data saved
                }
            }
        }
}

在add.ctp表格中

<?php echo $this->Form->create('Applicant');?>

<?php echo $this->Form->input('Applicant.type');?>

<?php echo $this->Form->input('Reference.0.name');?>
<?php echo $this->Form->input('Reference.1.name');?>
<?php echo $this->Form->input('Reference.2.name');?>

<?php echo $this->Form->end('Submit');?>

我知道一种方法是在视图中确保只提供所需的参考字段和数据,因此只验证那些所需的参考字段。但这意味着我无法允许输入和保存三个引用,但只有需要两个。

1 个答案:

答案 0 :(得分:0)

可能只是尝试创建custom validation rule。如果由于某些原因不能满足您的需求,您可以使用beforeSave()回调来执行您想要的任何类型的逻辑。

无论哪种方式,您都应该能够保存在一个saveAll()中。