使用数据库填充下拉菜单会导致Laravel 4

时间:2014-02-21 14:27:53

标签: php mysql forms drop-down-menu laravel-4

我正在尝试使用Laravel 4中的数据库结果填充下拉菜单。我对Laravel非常新。这实际上是我的第一个网站,我正在学习。所以,请告诉我,如果我使用了错误的术语或没有足够的信息。

我有一个公司信息数据库,我需要用户能够从下拉列表中选择一家公司。或者,如果公司不在数据库中添加它。

对于选择菜单,它需要像这样:

[公司名称结果]

我在我的控制器中使用此代码:

$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

我在这里做错了什么?

3 个答案:

答案 0 :(得分:16)

为了使用RecordCompany模型中的所有记录填充下拉菜单,您可以在视图中执行以下操作:

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

注意:在Laravel 5中,方法lists已被弃用。使用   而是pluck

代码说明:

  1. Form::select方法创建HTML选择标记。
  2. company_id是select标记的名称。
  3. 第二个参数是select标签的选项。任何模型中的lists方法(本例中为RecordCompany)都会生成一个关联数组,其中包含传递给该方法的参数(在本例中为idcompany_name)模型中所有记录的参数数据库表。
  4. 如果需要,您还可以从控制器调用lists方法,然后将值传递给视图,如下所示:

    在控制器中

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

    在视图中

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

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

答案 1 :(得分:0)

严重反对在视图中使用数据库调用。这就是为什么:

It ain't made for that!
期间

如果我在哪里(注意if子句)我想更好地完成一个常规数组,作为company->id数组键和任何其他信息,你可能想要特定的键作为一个值。在我的刀片代码上,我就这样做了:

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

“公司”将是控制器作为参数传递给视图的数组。

查看不是为了让DB咨询。它们用于显示数据。只是它!

这就是说:

  • Form::select上的第一个参数是选择器的名称。你在Input::get上得到的那个。
  • 第二个参数是用于完成select属性的列表(我们已在那里讨论过它!)
  • 第三,同样重要的是,您可以说在加载页面(用于版本)中选择了哪一个。您必须引用标识符(在这种情况下为公司ID)。它是可选的,原因很明显。

如果我没有说清楚,请在这里询问! = d

答案 2 :(得分:0)

对于Laravel 5,您可以这样编码: -

控制器代码

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

查看代码

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