Laravel 5 - 在编辑页面上处理空选择输入

时间:2015-12-11 13:57:10

标签: select laravel-5

在我的创建函数中,我将视图传递给用户列表然后显示。但是,我已将其更改为以下

<select class="internalWork" name="internalWork">
    <option value=""></option>
    @foreach($users as $user)
        <option value="{{ $user->userName }}">{{ $user->userName }}</option>
    @endforeach
</select>

所以我在列表显示之前添加了一个空选项。这很好,因为这个表列允许空输入。

在我的编辑功能中,我得到了列表

$users = User::lists('userName', 'userName');

然后我将其传递给我的编辑视图。在我的编辑视图中,我有以下

<div class="form-group">
    {!! Form::label('internalWork', 'Internal work for:', array('class' => 'col-sm-5 control-label red')) !!}
    <div class="col-sm-7">
        {!! Form::select('internalWork', $users, null, ['class' => 'internalWork']) !!}
    </div>
</div>

如果我在创建中选择了一个用户,那么当我进入编辑页面时,默认情况下会选择该用户。但是,如果我没有在创建中选择用户,则在编辑页面上默认显示列表中的第一个用户。

如果数据库值为null,如何让它显示空输入?

由于

2 个答案:

答案 0 :(得分:1)

@if (!empty($users)
// the Form
@else
// No result
@endif

OR

array_unshift($users, "There are no users") // Prepend null value to $users
...
// Form::select(..etc

答案 1 :(得分:1)

我认为问题是虽然您在创建视图中提供了一个空选项,但您在编辑视图中没有这样做。

如果在您的编辑功能中,您填充了这样的数组:

$users = ['' => ''] + User::lists('userName', 'userName');

然后我认为如果userName为空,将选择空选项。这基本上是将空对连接到您传递给视图的$users数组的开头。

您也可以考虑以相同的方式构建create视图 - 使用上面的代码在create方法中生成$users数组,然后在视图中使用Form facade。

我发现这对于使用Form::select()非常有用:Creating a Select Box Field