如何在Laravel的select选项中使用“枚举”值?

时间:2018-07-05 19:55:26

标签: laravel if-statement eloquent migration laravel-blade

Laravel刀片服务器上的build select出现问题,并且仅使用数据库中的两种类型的值

我在偏头痛中有专栏:

$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 stament,在其中使用它并检查一个女巫是否正确,并且该节目像所选的一样,但是我不知道该怎么做

3 个答案:

答案 0 :(得分:2)

在您的模型中:

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

答案 1 :(得分:1)

您不必两次定义<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="",实际的HTML则为$contactLabel。另外,会将您选择的值默认为最后输入的值,或$customer_event->contact_way

中的值

答案 2 :(得分:0)

有很多方法可以做到这一点,但请看一下您的代码。您重写整个选项只是为了更改一个单词:selected。

只需编写条件来处理该单词(使用三元运算符):

<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循环,但是如果您确实需要,可以创建一系列选项来循环。