laravel-form-builder を使い 1対多(OneToMany)のフォームを作りたいです
これを見ても、よくわかりません。
私は、今こんな感じでのフォームを作りたいです
親のフォームは問題ありません。
で、子供のフォームはjqueryで’項目追加’のボタン押したら追加で子供のフォームもう一つ生成して。submitの後にバリデーションが上手く行きません、何故かバリデーションは最初の子供のフォームしかしていません。
Form のCODE
class ItemsForm extends Form{
public function buildForm() {
$this->add('title', 'text' ,[
'label' => '名前',
$rules => 'required',
'error_messages' => [ 'title.required' => 'これは必須です' ]
]);
}
}
class PostForm extends Form{
public function buildForm(){
$this->add('title', 'text' ,[
'label' => '名前',
$rules => 'required',
'error_messages' => [ 'title.required' => 'これは必須です' ]
]);
->add('items', 'collection', [
'type' => 'form',
'options' => [
'class' => 'App\Forms\ItemsForm'
'label' => false,
]
]);
$this->add('submit', Field:: BUTTON_SUBMIT);
}
}
Controller のCODE
$form = $formBuilder->create('App\Forms\PostForm', [
'method' => 'POST',
'url' => route('test.store')
]);
return view('test.create', compact('form'));
HTML のCODEは長いので略します。
{!! form($form) !!}
で
子供のフォームがこんな感じで一つ生成しています。
<label for="items[0][title]" class="control-label required">名前:</label>
<input class="form-control" required="required" name="items[0][title]" type="text" id="items[0][title]">
jqueryで’項目追加’のボタン押したらこんな感じで追加子供のフォーム追加生成します。
<label for="items[1][title]" class="control-label required">名前:</label>
<input class="form-control" required="required" name="items[1][title]" type="text" id="items[1][title]">