在失败时填充laravel中的旧html选择字段

时间:2014-10-03 05:11:17

标签: php forms laravel laravel-4 laravel-form

我有一个带有选择输入的表单,验证很好,但是如果失败,选择字段不会填充旧值 这是我的选择字段

  <div class="control-group">
   <label class="control-label">Gender :</label>
    <div class="controls">
        <select  name="gender" value= "{{ Input::old('gender') }}">
            <option>Select</option>

                <option value="M">Male</option>
                <option value="F">Female</option>
        </select>
    </div>
</div> 

我该如何解决这个问题?

5 个答案:

答案 0 :(得分:10)

如果您不想使用Laravel Form构建,则需要这样做:

 <div class="control-group">
   <label class="control-label">Gender :</label>
    <div class="controls">
        <select  name="gender">
            <option>Select</option>

                <option value="M" @if (Input::old('gender') == 'M') selected="selected" @endif>Male</option>
                <option value="F" @if (Input::old('gender') == 'F') selected="selected" @endif>Female</option>
        </select>
    </div>
</div> 

答案 1 :(得分:3)

我个人认为此代码更清晰。这里没有对错,我可以理解为什么有人会更喜欢Laravel @ if @endif的陈述,我只是认为它们看起来太令人不安了。

<option {{ old('gender')=='male' ? 'selected="selected"' : '' }}>Test option</option>

答案 2 :(得分:1)

这是由于HTML select元素。

如果要为select元素指定一些默认选项值,请为该特定选项使用selected =“selected”属性,否则默认显示第一个选项值。

<select  name="gender">
    <option>Select</option>
        <option value="M" @if (Input::old('gender') == 'M') selected="selected" @endif>Male</option>
        <option value="F" @if (Input::old('gender') == 'F') selected="selected" @endif>Female</option>
</select>

答案 3 :(得分:0)

这就是我的方式,非常有活力。

<select id="gender" name="gender">
    <option>Select</option>
        <option value="M">Male</option>
        <option value="F">Female</option>
</select>

<script>
    var currentGender = null;
    for(var i=0; i!=document.querySelector("#gender").querySelectorAll("option").length; i++)
    {
        currentGender = document.querySelector("#gender").querySelectorAll("option")[i];
        if(currentGender.getAttribute("value") == "{{ old("gender") }}")
        {
            currentGender.setAttribute("selected","selected");
        }
    }
</script>

答案 4 :(得分:0)

我建议使用Laravel Collective软件包。

curl -XPOST http://localhost:8501/v1/models/saved_model:predict -d "{\"instances\":[{\"features\":[1,1,1,1,1,1,1,1,1,1]}]}"

它照顾了旧值,而没有在每个选择值中使用难看的if-else注入。