繁体   English   中英

Laravel-4 Blade:使用对象中的值制作一个表单选择框

[英]Laravel-4 Blade: making a form select box using values in an object

我希望为表格填写一个城市名称选择框。 我已经能够创建一个对象$ 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必须是数组而不是对象?

我是如此亲密,我可以品尝到它,但是我不知道最后一步。 对于适当的代码的任何建议,将不胜感激。 谢谢!

通常,我更喜欢先创建选择数据,然后再进入视图。 如果只是,它更容易阅读

{{ Form::select('city_bldg_id', $cities, '2' }}

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

这样,您就可以为创建数组所需的所有操作做foreach,并且可以用纯PHP而不是Blade来完成。

如果您要从Eloquent模型(例如City获取数据,则创建数组的一种简单方法是lists()方法:

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

如果您需要过滤掉特定的城市,则可以按照常规方法进行:

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

(我希望我对您已经知道的事情不承担太多的责任。如果这看起来太入门,并且对您没有帮助,我深表歉意。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM