如何在 blade laravel 8 中获取 select 输入的旧值?

How to get the old value of a select input in blade laravel 8?

我有一个 Select 并且这个 Select 可以在触发 onchange 事件时打开路由,一切正常,但是当新路由打开时, Select 条目初始化并恢复到第一个选项“选择肋骨”。 这是我的代码:

<select name="choose_rib" class="form-control" id="choose_rib" 
        onchange="top.location.href =this.options[this.selectedIndex].value">
    <option value="/rib/{{app('id')}}" {{ old('choose_rib') == 'rib/'.app('id') ? 'selected' : '' }}> 
        choose something 
    </option>
    
    @foreach ($ribs as $rib)
            <option value="/rib/{{ $rib->code_rib }}"  {{ old('choose_rib') == 'rib/'.$rib->code_rib ? 'selected' : ''}}>
                {{$rib->desig}}
            </option>
    @endforeach
</select>

在我的控制器中:

public function goTo(Request $request)
{  
    $ribs = DB::select('select desig, rib from myTable');
    return view('show', compact('ribs'));
}

请帮助我。

您可以将 option 值与 {{ request()->route()->uri }} 进行比较 - 例如:

<option value="/rib/{{ $rib->code_rib }}"  {{ request()->route()->uri == 'rib/'.$rib->code_rib ? 'selected' : ''}}>

请注意,使用表单元素进行导航是不好的做法,您可能会发现使用普通 html 链接(如果需要,使用 js 到 show/hide a 'dropdown' 会容易得多是)。

我试过这个 {{request () -> path ()}} 来获取当前 url 并比较选项值,就像这样(它工作正常):

<option value="/rib/{{ $rib->code_rib }}" {{ request()->path() == 'rib/'.$rib->code_rib ? 'selected' : ''}}>