如何在 laravel blade 表单中生成输入 select 并自定义其选项值?

How to generate input select in laravel blade form and customize its options value?

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

如何手动设置选项的值?

在控制器中:

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

可见(blade):

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

并且 select 创建为:

<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>

我只想手动设置值。

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

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

如果你想做一些比这更自定义的事情,你需要用你想要的 key/value 对手动构建你的数组。

编辑

正如@lukasgeiter在评论中提到的,不需要先调用all()

EventType::all()->lists() 将首先生成所有 EventType 对象的集合。然后它将在 Collection 对象上调用 lists(),这意味着它将遍历该 Collection 以构建一个包含您请求的字段的数组。

EventType::lists() 将在查询构建器对象上调用 lists(),这将只 select 两个请求的字段和 return 那些作为数组。它不会构建任何 EventType 对象(除非您 select 由模型 accessor 构建的字段)。