【问题标题】:How to generate input select in laravel blade form and customize its options value?如何以 laravel 刀片形式生成输入选择并自定义其选项值?
【发布时间】:2015-04-14 18:06:12
【问题描述】:

我正在尝试创建一个 laravel 表单,该表单具有从来自控制器的字符串数组生成的输入选择。

如何手动设置选项值?

在控制器中:

public function create()
{
    $eventTypes = EventType::all()->lists('title');
    return View::make('events.create')->with(compact('eventTypes'));
}

在视图中(刀片):

{{ Form::label('eventType', 'Type') }}
{{ Form::select('eventType', $eventTypes, null, array('class'=> 'form-control')) }}

并选择创建为:

<select class="form-control" id="eventType" name="eventType">
    <option value="0">Sport Competition</option>
    <option value="1">Movie</option>
    <option value="2">Concert</option>
</select>

我只想手动设置值。

【问题讨论】:

    标签: forms laravel blade


    【解决方案1】:

    选项中的值只是数组的键。 lists() 方法的第二个参数将让您选择一个字段作为键:

    // use the 'id' field values for the array keys
    $eventTypes = EventType::lists('title', 'id');
    

    如果您想做一些比这更自定义的事情,您需要使用所需的键/值对手动构建您的数组。

    编辑

    正如@lukasgeiter 在 cmets 中提到的,无需先调用all()

    EventType::all()-&gt;lists() 将首先生成一个包含所有 EventType 对象的集合。然后它将在 Collection 对象上调用 lists(),这意味着它将循环通过该 Collection 来构建一个包含您请求的字段的数组。

    EventType::lists() 将在查询构建器对象上调用lists(),它只会选择两个请求的字段并将它们作为数组返回。它不会构建任何 EventType 对象(除非您选择由 Model accessor 构建的字段)。

    【讨论】:

    • 无需先致电all()lists() 也可以直接在查询生成器上工作。
    • @lukasgeiter 绝对正确。我的愚蠢疏忽。我已经更新了答案。
    • @Mehdi 我提供了您可能感兴趣的答案的更新(更新基于 lukasgeiter 的评论)。
    • 感谢@all,对新的 laravel 开发人员非常有用的指南
    猜你喜欢
    • 2015-07-03
    • 2021-10-23
    • 2018-11-21
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多