我试图创建一个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>
我只想手动设置值。
答案 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构建的字段)。