У меня есть модель GenForm
, которая имеет связь HABTM с другой моделью PdfFile
. Я использую это для создания списка флажков в моем индексном представлении GenForm
. В модели GenForm
я добавил:
public $hasAndBelongsToMany = array(
'PdfFile' => array(
'className' => 'PdfFile',
'joinTable' => 'gen_forms_x_pdf_files'
)
Вот фрагмент моего GenForm
index.ctp
представления:
<?php
echo $this->Form->input( 'PdfFile', array('label' => 'Select some PDF files', 'multiple' => 'checkbox') );
echo $this->Form->input( 'first_name' );
echo $this->Form->input( 'last_name' );
?>
В контроллере у меня базовое сохранение:
if ($this->request->is('post')) { // form was submitted
$this->GenForm->create();
if ($this->GenForm->save($this->request->data)) {
return $this->redirect(array('action' => 'generate', $this->GenForm->id)); // assemble the PDF for this record
} else {
$this->Session->setFlash(__('Log entry not saved.'));
}
}
Теперь $this->data
выглядит примерно так, когда я debug()
это:
array(
'PdfFile' => array(
'PdfFile' => array(
(int) 0 => '1',
(int) 1 => '5'
)
),
'GenForm' => array(
'first_name' => 'xxx',
'last_name' => 'xxx',
'association_id' => '1',
'email' => ''
)
)
Все работает отлично, но я не смог проверить флажки (должен быть установлен хотя бы один). Итак, согласно этому ответу, я внес некоторые изменения.
Вид index.ctp
стал таким:
<?php
echo $this->Form->input( 'GenForm.PdfFile', array('label' => 'Select some PDF files', 'multiple' => 'checkbox') );
echo $this->Form->input( 'first_name' );
echo $this->Form->input( 'last_name' );
?>
Вот мое правило проверки:
public $validate = array(
'PdfFile' => array(
'rule' => array(
'multiple', array('min' => 1)
),
'message' => 'Please select one or more PDFs'
)
)
Вот так сейчас выглядит $this->data
:
array(
'GenForm' => array(
'PdfFile' => array(
(int) 0 => '1',
(int) 1 => '5'
),
'first_name' => 'xxx',
'last_name' => 'xxx',
'association_id' => '1',
'email' => ''
)
)
Теперь флажки для PdfFile
подтверждаются, но данные PdfFile
не сохраняются, хотя другие поля для GenForm
правильно сохраняются в своей собственной таблице.
Может ли кто-нибудь сказать мне, что мне не хватает, чтобы PdfFile
сохранялось автоматически и проверялось?