Предопределенные избыточные значения в представлении Laravel

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

<div class="form-group col-md-4">
    <label for="user_type">Privilege</label>
    <select name="user_type" class="form-control" id="">
        <?php $user_type = $user->user_type ?>
        @if ($user_type == 'Admin')
        <option value="Admin" selected>Admin</option>
        <option value="Facilitator">Facilitator</option>
        <option value="TeamLeader">TeamLeader</option>
        <option value="ScrumLeader">ScrumLeader</option>
        <option value="Member">Member</option>
        @elseif ($user_type == 'Facilitator')
        <option value="Admin">Admin</option>
        <option value="Facilitator" selected>Facilitator</option>
        <option value="TeamLeader">TeamLeader</option>
        <option value="ScrumLeader">ScrumLeader</option>
        <option value="Member">Member</option>
        @elseif ($user_type == 'TeamLeader')
        <option value="Admin">Admi   n</option>
        <option value="Facilitator">Facilitator</option>
        <option value="TeamLeader" selected>TeamLeader</option>
        <option value="ScrumLeader">ScrumLeader</option>
        <option value="Member">Member</option>
        @elseif ($user_type == 'ScrumLeader')
        <option value="Admin">Admin</option>
        <option value="Facilitator">Facilitator</option>
        <option value="TeamLeader">TeamLeader</option>
        <option value="ScrumLeader" selected>ScrumLeader</option>
        <option value="Member">Member</option>
        @else
        <option value="Admin">Admin</option>
        <option value="Facilitator">Facilitator</option>
        <option value="TeamLeader">TeamLeader</option>
        <option value="ScrumLeader">ScrumLeader</option>
        <option value="Member" selected>Member</option>
        @endif
    </select>
</div>

person KiritoLyn    schedule 21.02.2019    source источник


Ответы (2)


Я бы предложил использовать пакет laravelcollective / html (здесь)

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

{{Form::select('user_type', $usertypearray, $user->user_type, ['class' => 'form-control']) }}

Где $ usertypearray - это массив значений => меток. Например:

$usertypearray = ['admin'=> 'Admin', 'facilitator'=> 'Facilitator', 'teamleader'=> 'TeamLeader', 'scrumleader'=> 'ScrumLeader','member'=>'Member'];

(Я ввожу значения в нижнем регистре, но проверяю, что сервер ищет)

person Lucien Dubois    schedule 21.02.2019
comment
Я понимаю, как мне проверить текущее значение привилегий пользователя? Мне жаль, что я еще не знаком с этой формой. - person KiritoLyn; 21.02.2019
comment
@JustinF кажется, что вы уже получили значение с помощью $ user- ›user_type. Form :: select сделает все остальное! - person Lucien Dubois; 21.02.2019
comment
Я попробую это сделать, и можно ли в моем случае спросить, каким должно быть значение $ usertypearray? - person KiritoLyn; 21.02.2019
comment
Дай мне попробовать. Теперь я понимаю структуру. - person KiritoLyn; 21.02.2019
comment
Я заставил его работать и сделал код намного чище. Отлично сделано. - person KiritoLyn; 21.02.2019

Вы можете зацикливаться на теге select следующим образом

  {{ Form::select('user_type',$user_type ,old('user_type'),['class' => 'form-control']) }}

Надеюсь это поможет :)

person Maulik Shah    schedule 21.02.2019
comment
Это тот же пакет, что и @Lucien Dubois? - person KiritoLyn; 21.02.2019
comment
Ага, это то же самое. Если вам нужен тег html, посмотрите этот stackoverflow.com/questions/44238536/ - person Maulik Shah; 21.02.2019