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,在其中使用它并检查一个女巫是否正确,并且该节目像所选的一样,但是我不知道该怎么做
答案 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循环,但是如果您确实需要,可以创建一系列选项来循环。