如何获得刀片laravel 8中选择输入的旧值?

问题描述

我有一个 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 显示/隐藏“下拉列表”)。

,

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

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