Как лучше всего обрабатывать «Другое» в списке переключателей или флажков - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть список флажков, например,

[] Tomatoes
[] Cucumbers
[] Pumpkins
[] Other

Когда вы проверяете Other, появляется текстовое поле. Это сохраняется в одном столбце vegetables как строка JSON.

FormRequest.php

    public function rules()
    {
        return [
            'vegetable' => 'required'
        ]
    }
form.html

<legend class="@error('diagnose') text-red-500 : text-gray-900 @enderror">
                                    Did you get any of the following diagnoses last week? *
                                </legend>
<form action="" method="post">
    <input name="vegetable[]" type="checkbox" value="Tomatoes">Tomatoes</input>
    <input name="vegetable[]" type="checkbox" value="Cucumbers">Cucumbers</input>
    <input name="vegetable[]" type="checkbox" value="Pumpkins">Pumpkins</input>
    <input name="vegetable[]" type="checkbox" value="Other">Other</input>
    <input name="???" type="text"></input>
</form>

Идея состоит в том, чтобы это последнее поле было названо таким образом, поэтому легко:

  1. Показать ошибки проверки, в идеале без необходимости проверки двух полей (например, vegetable и vegetable_other)
  2. Добавить его значение в JSON без лишних if с .

Как это можно сделать в Laravel без создания стены кода?

1 Ответ

0 голосов
/ 04 апреля 2020

Вы можете сделать это, если овощ - это другое

 public function rules()
    {
        return [
             'vegetable' => 'required',
             'vegetableName'=>'required_if:vegetable,Other'     
        ]
    }

и в форме

form.html

<legend class="@error('diagnose') text-red-500 : text-gray-900 @enderror">
                                    Did you get any of the following diagnoses last week? *
                                </legend>
<form action="" method="post">
    <input name="vegetable" type="checkbox" value="Tomatoes">Tomatoes</input>
    <input name="vegetable" type="checkbox" value="Cucumbers">Cucumbers</input>
    <input name="vegetable" type="checkbox" value="Pumpkins">Pumpkins</input>
    <input name="vegetable" type="checkbox" value="Other">Other</input>
    <input name="vegetableName" type="text"></input>
</form>
...