如何在laravel刀片形式中生成输入选择并自定义其选项值?

时间:2015-02-13 16:18:56

标签: forms laravel blade

我试图创建一个laravel表单,其中输入select来自控制器的字符串数组。

如何手动设置选项值?

在控制器中:

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>

我只想手动设置值。

1 个答案:

答案 0 :(得分:1)

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

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

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

修改

如@lukasgeiter在评论中所述,无需先调用all()

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

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