如何在 Laravel 的选择选项中使用“枚举”值?
Posted
技术标签:
【中文标题】如何在 Laravel 的选择选项中使用“枚举”值?【英文标题】:How to use "enum" values in select option in Laravel? 【发布时间】:2018-12-14 09:17:53 【问题描述】:我在 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 状态,我将它用于事物并检查女巫一个是否正确,这个节目就像被选中但我不知道该怎么做
【问题讨论】:
【参考方案1】:有很多方法可以做到这一点,但请查看您的代码。你重写整个选项只是为了改变一个词:选中。
只需编写一个条件来处理该单词(使用三元运算符):
<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 循环,但如果你真的需要,你可以创建一个选项数组来循环。
【讨论】:
感谢您的帮助,与我的代码相比,它看起来非常好。【参考方案2】:您不必定义<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
,每个选项都有一个用于value=""
属性的$contactWay
和一个用于实际html 的$contactLabel
。此外,会将您选择的值默认为最后输入的值,或来自$customer_event->contact_way
的值
【讨论】:
谢谢它的工作非常好,我想我不应该定义我的 默认选择的值是第一个输入,而不是最后一个。 @ChinLeung 不,选择的值是通过old("contact_way", $customer_event->contact_way)
设置的,或者在这种情况下$customer_event->contact_way
设置为任何值。如果是null
,或者未设置,则默认设置email
。
哦,我误解了你写句子的方式。我以为您的意思是如果之前没有选择任何内容,它将选择最后一个元素。
啊,是的,对不起。我所说的“最后输入”是指您最后提交给服务器的任何内容;这就是old()
所做的。【参考方案3】:
在您的模型中:
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
【讨论】:
$customer_event['contact_way'] 为空以上是关于如何在 Laravel 的选择选项中使用“枚举”值?的主要内容,如果未能解决你的问题,请参考以下文章
如何以 laravel 刀片形式生成输入选择并自定义其选项值?