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' => ''
)
)
すべてが完全に機能しますが、チェックボックスを検証できませんでした (少なくとも 1 つをチェックする必要があります)。したがって、この回答に従って、いくつかの変更を加えました。
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
自動的に保存して検証されるように、私が欠けているものを誰かに教えてもらえますか?