Laravel编辑表单,获取下拉列表的值

时间:2018-02-25 13:53:28

标签: laravel laravel-5 drop-down-menu blade

我有一个用户提交表单,其中一些字段是下拉列表

                <div class="form-group row">
                  <label for="type" class="col-md-3 col-form-label text-md-right">Type</label>
                    <div class="col-md-9">
                      <select class ="form-control" id="type" name="type">
                        <option>Apartment</option>
                        <option>House</option>
                        <option>Studio</option>
                        <option>Flat</option>
                      </select>
                      @if ($errors->has('type'))
                          <span class="invalid-feedback">
                              <strong>{{ $errors->first('type') }}</strong>
                          </span>
                      @endif
                    </div>
                </div>

这很好用。

我不想让用户编辑特定表单。我可以通过为输入分配值并像这样调用数据

来获取标题和照片等其他部分
<input id="Address" type="text" class="form-control" name="address" value="{{$Advert->address }}" required autofocus>

但是当我尝试在选择选项上做类似的事情时,什么都没有出现。这是编辑页面上的下拉列表。

<div class="form-group row">
                          <label for="type" class="col-md-3 col-form-label text-md-right">Type</label>
                            <div class="col-md-9">
                              <select class ="form-control" id="type" name="type" value="{{$Advert->type}}">
                                <option></option>
                                <option>Apartment</option>
                                <option>House</option>
                                <option>Studio</option>
                                <option>Flat</option>
                              </select>
                              @if ($errors->has('type'))
                                  <span class="invalid-feedback">
                                      <strong>{{ $errors->first('type') }}</strong>
                                  </span>
                              @endif
                            </div>
                        </div>

2 个答案:

答案 0 :(得分:2)

您需要在selected元素上使用option属性,而不是直接将值分配给select

<select class ="form-control" id="type" name="type">
      <option value="">Select</option>
      <option {{ $Advert->type == 'Apartment' ? 'selected':'' }}>Apartment</option>
      <option {{ $Advert->type == 'House' ? 'selected':'' }}>House</option>
      <option {{ $Advert->type == 'Studio' ? 'selected':'' }}>Studio</option>
      <option {{ $Advert->type == 'Flat' ? 'selected':'' }}>Flat</option>
 </select>

但我建议您使用Laravel Collective Forms更好地处理表单及其元素

答案 1 :(得分:0)

在我使用Laravel Collective Forms之前就已经提出了建议;像这样:

{!! Form::select('type',$selectOptions,null,['id' =>'type','class' => 'form-control'])!!}

变量$ selectOptions将包含所有选项:

$selectOptions = [
    '' => 'Select',
    'Apartment' => 'Apartment',
    'House' => 'House',
    'Studio' => 'Studio',
    'Flat' => 'Flat'
];

这很容易做到。所有事情应该在一个表格内。

{!! Form::open() !!}} or {!! Form::model($model) !!}

希望它有所帮助。