Laravel 数据库选择带有占位符的下拉菜单
Posted
技术标签:
【中文标题】Laravel 数据库选择带有占位符的下拉菜单【英文标题】:Laravel database select dropdown with placeholder 【发布时间】:2014-10-03 01:55:20 【问题描述】:您好,我正在使用我的数据库中存在的客户端填充选择下拉列表,但是我首先需要一个占位符,例如Please select a Client
。有人知道语法吗?
这是我目前所拥有的:
@if(count($client_options)>0)
Form::select('client', $client_options , Input::old('client'), array('placeholder' => 'Please select a client', 'id' => 'select_client', 'class' => 'chosen-select select', 'tabindex' => '2', ))
@endif
占位符属性但不起作用,有人知道怎么做吗?在此先感谢
【问题讨论】:
你能不能在使用之前将另一个项目附加到客户端数组? @mike 我该怎么做..?例子? 【参考方案1】:假设您正在 Laravel 表单构建器中创建一个下拉列表。那么代码应该是这样的——
在控制器中 -
$categories = Category::select('id', 'name')->lists('name', 'id')->prepend('Select a category', '')->toArray();
并且在视野中 -
!! Form::select('cat_id', $categories, old('cat_id')) !!
用 Laravel 5.x 测试。
或者如果你有一个类似的数组 -
$array = ['1' => 'lorem ipsum', '4' => 'Another text'];
并且在将这个数组传递给视图之后 -
!! Form::select('cat_id', $array, old('cat_id')) !!
不会有占位符。如果你通过下面的数组 -
$array = ['' => 'Select category', '1' => 'lorem ipsum category', '4' => 'Another category'];
或者有一个你想在视图中传递的集合来构建选择/下拉列表然后
$array = $collection->prepend('Select a category', '')->toArray();
您需要传递一个数组才能构建下拉列表。
注意:
array_unshift
或array_merge
将无法正常工作!
【讨论】:
很好,不知道prepend
功能。 +1【参考方案2】:
@if(count($client_options)>0)
$client_options[] = "Please select a Client";
Form::select('client', $client_options , Input::old('client'), array('placeholder' => 'Please select a client', 'id' => 'select_client', 'class' => 'chosen-select select', 'tabindex' => '2', ))
@endif
【讨论】:
那行不通我认为我正在执行此 if 语句,它以纯文本形式输出此$client_options[] = "Please select a Client";
$clients_options 数组中有什么东西吗?如果你不这样做,那么它将永远不会进入 if 语句。
你可以 dd($client_options) 来检查一下吗?此外,如果您删除我的建议,它是否会按照您的预期显示一个列表(显然没有“默认”文本)。
array(3) [2]=> string(16) "Client1" [3]=> string(8) "Client2" [1]=> string(17) "Client3"
已根据有关设置存储库和实施该方法的良好建议接受了答案。已经开始了,这是一个非常干净的方法。非常感谢!【参考方案3】:
只需在控制器中使用占位符准备选择并将其传递给视图,如下所示:
$client_options = ['Select a Client'] + Client::lists('field_name', 'id');
然后在您的视图中您可以检查$client_options
中是否包含多个项目,例如:
@if(count($client_options) > 1)
Form::select(
'client',
$client_options ,
Input::old('client'),
array(
'id' => 'select_client',
'class' => 'chosen-select select',
'tabindex' => '2'
)
)
@endif
【讨论】:
【参考方案4】:如果有人来到这里试图弄清楚如何将项目设置为选中,这里有一个提示。
Form:select 中的第三个数组元素设置选择什么项目:
Form::select('number', [0, 1, 2], 1)
第三个元素也可以是一个数组,用于设置多个项目为选中状态:
Form::select('number', [0, 1, 2], [1,2])
占位符始终是数组元素 0。要将占位符设置为选中,请确保 Form:select 数组元素 3 为零或数组中为零:
Form::select('number', [1, 2, 3], [0,1], ['class' => 'field', 'placeholder' => $var])
【讨论】:
以上是关于Laravel 数据库选择带有占位符的下拉菜单的主要内容,如果未能解决你的问题,请参考以下文章