如何使用laravelcollective将默认空白选项添加到选择输入字段?

时间:2015-09-01 12:05:52

标签: php forms laravel html-select laravelcollective

我有一个表单,用户可以选择选择一个选项,如果用户没有选择选项,我需要将默认值'null'提交给数据库。 我正在使用laravel 5.1,所以我的输入字段如下:

           <div class="form-group col-lg-4">
                {!! Form::label('cat1', 'CAT Tool 1', ['class' => 'control-label']) !!}
                <div class="input-group">
                    <div class="input-group-addon">
                        <span class="glyphicon glyphicon-cog"></span>
                    </div>
                    {!! Form::select('cat1', $cats , null , ['class' => 'form-control']) !!}
                </div>
            </div>

此处$cats数组是CAT工具($cats=['SDL Trados', 'Deja Vu', 'WordFast', 'OmegaT', 'Fluency'];)的数组。我有类似的字段,其中返回一组数据库属性(例如在控制器创建方法中我有$languages=Language::lists('fa_name', 'id');)。我怎么能做到这一点?

2 个答案:

答案 0 :(得分:2)

我不知道将其提交为null。如果你在那里放一个空白的,那么它将作为空字符串返回,所以你必须检查它是empty,如果是,则将其设置为空。

要将其添加到数组中,只需将其添加到开头即可。

$cats = ['', 'SDL Trados', 'Deja Vu', 'WordFast', 'OmegaT', 'Fluency'];

或者,如果您已经拥有$cats变量,则需要对其进行修改...

array_unshift($cats, '');

您可能必须键入这些数组,因为我相信select会将键设置为文本,将值设置为选项元素中的值。

在这种情况下,您仍然希望使用array_unshift并传入数组而不是字符串。

array_unshift($languages, ['Optional' => '']);`

这将为选择添加一个附加选项,其中包含测试Optional且没有值。

答案 1 :(得分:2)

用于返回数组的lists方法,但是从Laravel 5.1开始,它返回一个集合,所以我需要将$语言转换为这样的数组:

$languages=Language::lists('fa_name', 'id')->all();

$languages=Language::lists('fa_name', 'id')->toArray();

接下来在视图中我可以使用以下内容:

  {!! Form::select('from1', [null => 'Select your language'] + $languages, null , ['class' => 'form-control']) !!}

将向选择字段添加一个空选项。