簡體   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