Laravel-4 Blade:使用对象中的值创建表单选择框

时间:2014-07-03 20:42:26

标签: php forms laravel-4 blade

我希望为表单选择一个城市名称框。我已经能够创建并传递给我的视图一个对象$ 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必须是数组而不是对象吗?

我很亲密,我可以品尝它,但我无法弄清楚最后一步。任何有关适当代码的建议都将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:4)

我通常更喜欢在进入视图之前创建选择数据。如果它只是

,它更容易阅读
{{ Form::select('city_bldg_id', $cities, '2' }}

(旁注:不确定是否需要将2括在引号中。可能不是。)

这样,你可以为创建数组做所有你想做的事情,你可以用纯PHP而不是Blade来做。

如果您从Eloquent模型获取数据,则可以通过一种简单的方式创建数组,例如: Citylists()方法:

$cities = City::lists('name', 'id');

如果您需要过滤掉特定城市,您只需按照正常方式进行:

$cities = City::where('somefield', '=', 'value')-> etc... ->lists('name', 'id');

(我希望我不会对你已经知道的事情做太多假设。如果这看起来太初创了,对你没有帮助,我道歉。)