Laravel 5 验证失败时下拉框不传回旧值

Laravel 5 dropdown box do not pass back old value upon validation fail

我有一个简短的问题。我在我的注册表中制作了一个用于性别选择的下拉框,如下所示:

<div class="col-md-6 col-sm-6">
    <select name="gender" value="{{ old('gender') }}" class="form-control">
        <option value=null>------ Gender ------</option>
        <option value="male">Male</option>
        <option value="female">Female</option>
    </select>
    {!! MessagerService::setInlineError($errors->first('gender')) !!}
</div>

所以我所做的是在验证失败时,所选的性别不会传回表单。任何想法我做错了什么?谢谢。

你不必写得通俗易懂HTML。您可以利用 Laravel 表单生成器。在 Laravel 5 中它不是默认捆绑的,就像在 4.2 中一样,所以首先你需要要求它。转到您的项目根目录并在终端中写入:

composer require "illuminate/html":"5.0.*"

然后转到 config/app.php 并在 providers 下添加

'Illuminate\Html\HtmlServiceProvider',

您也可以在 aliases 下注册这两个门面:

'Form'=> 'Illuminate\Html\FormFacade', 
'HTML'=> 'Illuminate\Html\HtmlFacade',

之后您就可以使用 Form facade 创建您的 select,只需一行简单的代码即可处理旧的输入值:

{!! Form::select('gender', ['' => '--Gender--', 'male' => 'Male', 'female' => 'Female']) !!}

就这么简单。您可以查看 documentation 以找到 Form 外观的更多有用方法。