我正在使用CakePHP 2.6.3。
我认为最好用一个例子来解释。
我有一个模型Applicant
和Applicant 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');?>
我知道一种方法是在视图中确保只提供所需的参考字段和数据,因此只验证那些所需的参考字段。但这意味着我无法允许输入和保存三个引用,但只有需要两个。
答案 0 :(得分:0)
可能只是尝试创建custom validation rule。如果由于某些原因不能满足您的需求,您可以使用beforeSave()
回调来执行您想要的任何类型的逻辑。
无论哪种方式,您都应该能够保存在一个saveAll()
中。