Как использовать "enum" значения в опции выбора в Laravel? - PullRequest
0 голосов
/ 05 июля 2018

У меня проблема с выбором сборки в блейде Laravel и я использую только два типа значений из базы данных

В моем мигратоне есть столбец:

$table->enum('contact_way', ['email', 'phone']);  

Я должен использовать его в форме блэйда для обновления, я использую простое выражение @if, но это не хорошо

<select class="form-control" name="contact_way">
    @if ($customer_event->contact_way === "email")
        <option value="email" selected>Kontakt e-mail</option>
        <option value="phone" >Kontakt telefoniczny</option>
    @else
        <option value="email" >Kontakt e-mail</option>
        <option value="phone" selected>Kontakt telefoniczny</option>
    @endif
</select>

Я хочу использовать foreach staement, где я использую это для вещей и проверяю, все ли правильно, и это шоу, как выбранное, но я не знаю, как это сделать

Ответы [ 3 ]

0 голосов
/ 05 июля 2018

Вам не нужно определять ваш <option> дважды. Попробуйте это:

<select class="form-control" name="contact_way">
    @foreach(["email" => "Kontakt e-mail", "phone" => "Kontakt telefoniczny"] AS $contactWay => $contactLabel)    
    <option value="{{ $contactWay }}" {{ old("contact_way", $customer_event->contact_way) == $contactWay ? "selected" : "" }}>{{ $contactLabel }}</option>
    @endforeach
</select>

Это сгенерирует ваш select с двумя вариантами, каждый с $contactWay для атрибута value="" и $contactLabel для фактического HTML. Кроме того, по умолчанию выбранное значение будет равно тому, которое было введено последним, или значение от $customer_event->contact_way

0 голосов
/ 06 июля 2018

В вашей модели:

protected $contact_way = ['email', 'phone'];

теперь цикл как

@foreach($customer_event['contact_way']'as $contact)
        <option value="{{$contact}}" @if($contact == $customer_event->contact_way) "selected" @endif >{{ $contact}}</option>
@endforeach
0 голосов
/ 05 июля 2018

Есть много способов сделать это, но посмотрите на свой код. Вы переписываете все варианты только для того, чтобы изменить одно слово: выбрано.

Просто напишите условие для обработки этого слова (используя троичные операторы):

<option value="email" <?= $customer_event->contact_way === 'email' ? 'selected' : '' ?>>Kontakt e-mail</option>
<option value="phone" <?= $customer_event->contact_way === 'phone' ? 'selected' : '' ?>>Kontakt telefoniczny</option>

Я не вижу необходимости в цикле foreach только с двумя элементами, но вы можете создать массив опций для циклического прохождения, если вы действительно этого хотите.

...