Как отправить форму, если пользователь не хочет добавлять hasMany FormItems - PullRequest
0 голосов
/ 04 января 2019

Я использую Laravel 5.7.*.

У меня есть form, который имеет много formItems, как form hasMany formItems & formItems belongsTo form, но я хочу между ними if, что если пользователь не хочет добавлять formItems только form хранилище данных в DB, и если пользователь хочет добавить formItems оба хранилища данных в DB, сейчас они хранят обе данные в DB, но я не знаю, как заставить их хранить, если пользователь этого не делает хочу formItems.

Вот мой FormController store method():

public function store(Request $request)
{
    //SUBMITTING FORM DATA
    $form = Form::create([
        'user_phone' => $request['user_phone'],
        'user_name' => $request['user_name'],
    ]);

    //SUBMITTING FORMITEMS DATA
    $form_items = [];
    foreach($request['formItems'] as $form_item) {
        $form_items[] = new FormItem([
            'form_id' => $form->id,
            'family_name' => $form_item ['family_name'],
            'family_phone' => $form_item ['family_phone'],
        ]);
    }
    $form->formItems()->saveMany($form_items);
}

Изображение для лучшего понимания: enter image description here

enter image description here

Ответы [ 2 ]

0 голосов
/ 04 января 2019

вы можете сделать это

public function store(Request $request)
{
   //SUBMITTING FORM DATA
   $form = Form::create([
       'user_phone' => $request['user_phone'],
       'user_name' => $request['user_name'],
    ]);


    $form_items = [];
    foreach($request['formItems'] as $form_item) {
      // when the user enter $form_item ['family_name'] && $form_item ['family_phone'] store the FormItem
      // or $form_item ['family_name'] || $form_item ['family_phone']
      // depending if both are required or not 
      if($form_item ['family_name'] && $form_item ['family_phone']){
        $form_items[] = new FormItem([
            'form_id' => $form->id,
            'family_name' => $form_item ['family_name'],
            'family_phone' => $form_item ['family_phone'],
        ]);
      }
    }

    $form->formItems()->saveMany($form_items);

}
0 голосов
/ 04 января 2019

В вашей форме может быть установлен флажок, чтобы спросить пользователя, хотят ли они также сохранить элементы формы.

<input type="checkbox" name="save-form-items" value="true" id="save-form-items">
<label for="save-form-items"> Do you want to save form items?</label>

и затем в вашем контроллере вы можете сделать что-то вроде этого:

public function store(Request $request)
{
    //SUBMITTING FORM DATA
    $form = Form::create([
        'user_phone' => $request['user_phone'],
        'user_name' => $request['user_name'],
    ]);

    if ($request->has('save-form-items')) {
        $form_items = [];
        foreach($request['formItems'] as $form_item) {
            $form_items[] = new FormItem([
                'form_id' => $form->id,
                'family_name' => $form_item ['family_name'],
                'family_phone' => $form_item ['family_phone'],
            ]);
        }

        $form->formItems()->saveMany($form_items);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...