【问题标题】:How get old value on select in laravel blade?如何在 laravel Blade 中选择旧值?
【发布时间】:2020-02-14 04:02:15
【问题描述】:

我有使用选择下拉列表的过滤器表单,但是在我提交此过滤器(如输入类型文本)后,我无法获得此旧值。有人可以帮忙吗?

<div class="form-group">
     <label>Status</label>  
        <select class="form-control select2 select2-hidden-accessible" style="width: 100%;" data-select2-id="1" tabindex="-1" aria-hidden="true"
                    name="user_id" id="user_id" required
                    >
                      @foreach($unit as $id => $nama_unit )
                      <option value="{{ $id }}">{{ $nama_unit }}</option>
                      @endforeach
                </select> 
        <div class="help-block with-errors"></div>
    </div>

我添加了我的功能控制器:

public function search_filter_alkes(Request $request)
{   

    $unit        = User::where('roles_id' , 1)->pluck('nama_unit', 'id'); 
    $user_id = $request->user_id;


    $alat = Alat::with('users')->where('user_id',$user_id)
    ->where('jenis', 'Alkes')->
    get();

    session()->put('user_id',$user_id);

    return view('sarpras.alkes',['user_id' => $user_id , 'unit' => $unit,'alat' => $alat  ])

    ->with('user_id', $user_id)
    ;


}

【问题讨论】:

  • 请与我们分享完整的刀片模板代码和控制器代码。如果是这样,我将帮助解决您的问题。

标签: laravel


【解决方案1】:

根据您的代码使用它并确保您使用 withInput()

return redirect()->back()->withErrors($validator)->withInput();

<div class="form-group">
     <label>Status</label>  
        <select class="form-control select2 select2-hidden-accessible" style="width: 100%;" data-select2-id="1" tabindex="-1" aria-hidden="true"
                    name="user_id" id="user_id" required
                    >
                      @foreach($unit as $id => $nama_unit )
                      <option value="{{ $id }}" {{ old('user_id') == $id ? "selected" :""}}>{{ $nama_unit }}</option>
                      @endforeach
                </select> 
        <div class="help-block with-errors"></div>
    </div>

已编辑

当你在 post 方法之后使用 redirect() 时,你必须使用 withInput() 正如我上面提到的例子

return redirect('route')->withInput();

当你使用 view() 时,你必须像你的代码一样传递像 array 这样的数据,然后使用相同的 variable 名称

    return view('sarpras.alkes',['user_id' => $user_id , 'unit' => $unit,'alat' => $alat  ])

<option value="{{ $id }}" {{ $user_id == $id ? "selected" :""}}>{{ $nama_unit }}</option>

【讨论】:

  • 等等,我试试
  • 是的,确保你也从控制器函数传递数据return redirect()-&gt;back()-&gt;withErrors($validator)-&gt;withInput();
  • 我有错误未定义的偏移量:0 如果我添加 ->withInput()
  • 根据你的代码我猜old('user_id') == $id ?更改$user_id == $id
  • 好吧,我试试这个
【解决方案2】:

您必须将旧值与输入键进行比较。所以在你的 for 循环中替换下面的代码

@if (Input::old('user_id') == $id)
      <option value="{{ $id }}" selected>{{ $nama_unit }}</option>
@else
      <option value="{{ $id }}">{{ $nama_unit }}</option>
@endif

【讨论】:

  • 我有问题 Class 'Input' not found 。我在刀片上使用输入,这个怎么样?
【解决方案3】:

您有多种选择:

<select name="tags[]" class="form-control select-tag" multiple>
              @foreach($tags as $tag)
   <option value="{{$tag->id}}" {{in_array($tag->id, old("tags") ?: []) ? "selected": ""}}>{{$tag->name}}</option>
              @endforeach
</select>

<select name="gender" class="form-control" id="gender">
        <option value="">Select Gender</option>
        <option value="M" @if (old('gender') == "M") {{ 'selected' }} @endif>Male</option>
        <option value="F" @if (old('gender') == "F") {{ 'selected' }} @endif>Female</option>
</select>

【讨论】:

    【解决方案4】:

    这在 laravel 8 中对我有用:

    <select class="form-control" id="gender" name="gender" required>
       <option value="">Select gender</option>
       <option value="M" @if (old('gender') == "M") {{ 'selected' }} @endif>Male</option>
       <option value="F" @if (old('gender') == "F") {{ 'selected' }} @endif>Female</option>
       <option value="O" @if (old('gender') == "O") {{ 'selected' }} @endif>Other</option>
    </select>
    

    【讨论】:

      猜你喜欢
      • 2017-10-08
      • 1970-01-01
      • 2017-03-20
      • 1970-01-01
      • 2021-10-23
      • 2015-05-22
      • 2021-08-05
      • 1970-01-01
      • 2021-06-02
      相关资源
      最近更新 更多