2014-02-21 20 views
8

我試圖在Laravel 4中填充數據庫結果的下拉菜單。我對Laravel非常陌生。這實際上是我的第一個網站,我正在學習。所以,請告訴我是否使用了錯誤的術語或沒有足夠的信息。在Laravel 4中填充數據庫結果的下拉菜單4

我有一個公司信息的數據庫,我需要用戶能夠從下拉列表中選擇一家公司。或者如果公司不在數據庫中添加它。

對於選擇菜單,它需要這樣的:

[公司名稱結果]

而且我使用此代碼在我的控制器:

$companies = RecordCompany::get(); 
$company_selector = array(); 

foreach($companies as $company) { 
    $company_selector[$company->id] = $company->id; 
    $company_selector[$company->company_name] = $company->company_name; 
} 

return View::make('admin.record_new', array('company_selector' => $company_selector)); 

這是我在我看來有什麼:

@if(count($client_selector)>0) 
    {{ Form::select('company_id', $company_selector, array_values($company_selector)[0]) }} 
@endif 

聲明:我在網上找到這個代碼。

首先,我不明白如何填充值和選項文本,而不告訴它在哪裏放置數據。

其次,返回的錯誤是意想不到的。當我在表格代碼中取出[0]時,它告訴我$company_selectorundefined

我在這裏做錯了什麼?

回答

16

爲了填充從RecordCompany模型中的所有記錄的下拉菜單,你可以做到以下幾點,你的觀點:

{{ Form::select('company_id', RecordCompany::lists('company_name', 'id')) }} 

注:在Laravel 5,該方法lists一直棄用。改爲使用 pluck

解釋代碼:

  1. Form::select方法創建一個HTML選擇標籤。
  2. company_id是選擇標籤的名稱。
  3. 第二個參數是選擇標籤的選項。任何模型(本例中爲RecordCompany)中的lists方法都會生成一個關聯數組,其中包含傳遞給模型數據庫表中所有記錄的參數(本例中爲idcompany_name)的關聯數組。

如果你願意,你也可以調用來自控制器的lists方法,然後將值傳遞給視圖,類似以下內容:

在控制器

$company_lists = RecordCompany::lists('company_name', 'id'); 

return View::make('admin.record_new', array('company_lists' => $company_lists)); 

在View

{{ Form::select('company_id', $company_lists) }} 

您可以在此處查看Laravel 4文檔以生成下拉列表:http://laravel.com/docs/html#drop-down-lists

0

我是嚴重反對在視圖中使用DB調用。這是爲什麼:

It ain't made for that!
期間

如果我在哪裏(請注意if子句),我想最好完成一個常規數組,作爲company->id數組鍵和任何其他信息,您可能希望將該特定鍵用作值。在我的刀片的代碼,我就做這樣:

{{ Form::select('company_id', $companies) }} 

其中「企業」是由控制器作爲參數傳遞給視圖一個數組。

視圖不是用來進行數據庫諮詢。它們被用來顯示數據。只是它!

話雖這麼說:

  • 第一參數上Form::select是選擇的名字。你在Input::get上得到的那個。
  • 第二參數是符合選擇屬性列表(我們已經談過它在那裏!)
  • 第三,不那麼重要,就是你說的加載網頁上自帶選擇哪一個(用於版本)。你必須引用標識符(在這種情況下是公司的id)。這是可選的,原因很明顯。

如果我沒有說清楚,請在這裏問問! = d

+0

感謝您的答覆。只是爲了確認,我的代碼在控制器中是否正確設置了數組? – jerauf

+0

Theres不需要多維數組。一個二維可以完成這項工作。 –

+0

好的,這就是我在控制器中所做的:'$ companies = RecordCompany :: lists('company_name','id'); return View:make('admin.record_new',array('companies'=> $ companies));'它仍然給我一個未定義的變量公司錯誤。我究竟做錯了什麼? – jerauf

0

對於Laravel 5,你可以像這樣的代碼: -

控制器代碼

$company_lists = RecordCompany::pluck('company_name', 'id'); 
return View::make('admin.record_new', $company_lists); 

查看代碼

{{ Form::select('company_id', $company_lists) }} 
相關問題