【问题标题】:Laravel database select dropdown with placeholderLaravel 数据库选择带有占位符的下拉菜单
【发布时间】: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 我该怎么做..?例子?

标签: php select laravel placeholder


【解决方案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_unshiftarray_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])
    

    【讨论】:

      猜你喜欢
      • 2014-12-05
      • 2018-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-14
      • 2016-01-10
      • 1970-01-01
      相关资源
      最近更新 更多