如何以 laravel 刀片形式生成输入选择并自定义其选项值?
Posted
技术标签:
【中文标题】如何以 laravel 刀片形式生成输入选择并自定义其选项值?【英文标题】:How to generate input select in laravel blade form and customize its options value? 【发布时间】: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>
我只想手动设置值。
【问题讨论】:
【参考方案1】:选项中的值只是数组的键。 lists()
方法的第二个参数将让您选择一个字段作为键:
// use the 'id' field values for the array keys
$eventTypes = EventType::lists('title', 'id');
如果您想做一些比这更自定义的事情,您需要使用所需的键/值对手动构建您的数组。
编辑
正如@lukasgeiter 在 cmets 中提到的,无需先调用all()
。
EventType::all()->lists()
将首先生成一个包含所有 EventType 对象的集合。然后它将在 Collection 对象上调用 lists()
,这意味着它将循环通过该 Collection 来构建一个包含您请求的字段的数组。
EventType::lists()
将在查询构建器对象上调用lists()
,它只会选择两个请求的字段并将它们作为数组返回。它不会构建任何 EventType 对象(除非您选择由 Model accessor 构建的字段)。
【讨论】:
无需先致电all()
。 lists()
也可以直接在查询生成器上工作。
@lukasgeiter 绝对正确。我的愚蠢疏忽。我已经更新了答案。
@Mehdi 我提供了您可能感兴趣的答案的更新(更新基于 lukasgeiter 的评论)。
感谢@all,对新的 laravel 开发人员非常有用的指南以上是关于如何以 laravel 刀片形式生成输入选择并自定义其选项值?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel 5.6 的一个刀片文件中使用不同的形式