使用数据库填充下拉菜单会导致Laravel 4
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用数据库填充下拉菜单会导致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_selector
是undefined
。
我在这做错了什么?
为了使用RecordCompany模型中的所有记录填充下拉菜单,您可以在视图中执行以下操作:
{{ Form::select('company_id', RecordCompany::lists('company_name', 'id')) }}
注意:在Laravel 5中,方法
lists
已被弃用。请改用pluck
。
代码说明:
Form::select
方法创建html选择标记。company_id
是select标签的名称。- 第二个参数是select标签的选项。任何模型中的
lists
方法(本例中为RecordCompany)都会生成一个关联数组,其中包含传递给模型数据库表中所有记录的该方法(本例中为id
和company_name
)的参数。
如果需要,还可以从控制器调用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
我严重反对在视图中使用数据库调用。这就是为什么:
It ain't made for that!
。
期。
如果我在哪里(注意if
子句)我想更好地完成一个常规数组,作为company->id
数组键和任何其他信息,你可能想要该特定键作为值。在我的刀片代码上,我是这样做的:
{{ Form::select('company_id', $companies) }}
其中“公司”是控制器作为参数传递给视图的数组。
没有查看DB查询的意见。它们用于显示数据。只是它!
话虽如此:
Form::select
的第一个参数是选择器的名称。你在Input::get
上得到的那个。- 第二个参数是满足select属性的列表(我们已经在那里讨论过它!)
- 第三个,同样重要的是,您可以说在加载页面(用于版本)中选择了哪一个。您必须引用标识符(在这种情况下为公司ID)。由于显而易见的原因,它是可选的。
如果我没有说清楚,请在这里询问! = d
对于Laravel 5,您可以这样编码: -
控制器代码
$company_lists = RecordCompany::pluck('company_name', 'id');
return View::make('admin.record_new', $company_lists);
查看代码
{{ Form::select('company_id', $company_lists) }}
以上是关于使用数据库填充下拉菜单会导致Laravel 4的主要内容,如果未能解决你的问题,请参考以下文章
Laravel/Javascript:在选择不同的选择/下拉列表后填充选择/下拉列表