我希望为表单选择一个城市名称框。我已经能够创建并传递给我的视图一个对象$ city,如果我只是在一个表单之外显示它们,我可以在我的视图中正确列出它们的值。选择框所需的$ city属性为:$ city-> id和$ city-> name。
我尝试使用Blade执行此操作失败了。问题归结为:如何在Blade Form :: select语句中嵌入@foreach?例如,如果没有@foreach,只需要在几个城市中进行搜索,这样就可以完美地工作,包括选择空白和默认的Albuquerque:
{{ Form::open() }}
{{ Form::Label('city_bldg_id','City:') }}
{{ Form::select('city_bldg_id', array(
'',
'2'=>'Albuquerque',
'11'=>'Bernalillo'
),'2') }}
{{ Form::close() }}
为了用$ city中的所有值填充选择框,我似乎需要在Form :: select数组中使用@foreach。这可能吗?如果是这样,怎么样?我的所有尝试都会产生语法错误。或者,$ city必须是数组而不是对象吗?
我很亲密,我可以品尝它,但我无法弄清楚最后一步。任何有关适当代码的建议都将不胜感激。谢谢!
答案 0 :(得分:4)
我通常更喜欢在进入视图之前创建选择数据。如果它只是
,它更容易阅读{{ Form::select('city_bldg_id', $cities, '2' }}
(旁注:不确定是否需要将2
括在引号中。可能不是。)
这样,你可以为创建数组做所有你想做的事情,你可以用纯PHP而不是Blade来做。
如果您从Eloquent模型获取数据,则可以通过一种简单的方式创建数组,例如: City
是lists()
方法:
$cities = City::lists('name', 'id');
如果您需要过滤掉特定城市,您只需按照正常方式进行:
$cities = City::where('somefield', '=', 'value')-> etc... ->lists('name', 'id');
(我希望我不会对你已经知道的事情做太多假设。如果这看起来太初创了,对你没有帮助,我道歉。)