【问题标题】:How to use "enum" values in select option in Laravel?如何在 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 状态,我将它用于事物并检查女巫一个是否正确,这个节目就像被选中但我不知道该怎么做

【问题讨论】:

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


    【解决方案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】:

    您不必定义&lt;option&gt; 两次。试试这个:

    <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-&gt;contact_way的值

    【讨论】:

    • 谢谢它的工作非常好,我想我不应该定义我的
    • 默认选择的值是第一个输入,而不是最后一个。
    • @ChinLeung 不,选择的值是通过old("contact_way", $customer_event-&gt;contact_way) 设置的,或者在这种情况下$customer_event-&gt;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'] 为空
    猜你喜欢
    • 2021-10-10
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多