我尝试了很多代码变体,并试图在其他主题中找到类似的问题。所以,我有表 users,其中每个用户都有一个城市(存储为数字),当然还有带有城市 ID 和名称的表 city(有 40 个城市)。
当真实用户打开他的个人资料设置页面时,我希望选择他的城市并以表格形式显示。在此示例中,用户表“Alex”的城市为“2”。在表城市中:id“2”和name_ru“cityB”。
如果我尝试这个:
@foreach(App\City::get() as $city)
<option value='{{ $city->id }}'>{{ $city->name_ru }}</option>
@endforeach
它只显示城市,但我需要这样的结果:
<option value="1" > cityA</option>
<option selected value="2" > cityB </option>
<option value="3" > cityC </option>
所以问题是 - 如何使 SELECTED 只有一个标签选项,其值等于该城市的编号,该城市存储在“Alex”表的用户中。
我考虑过这一点,但它没有显示任何内容:
@foreach(App\City::get() as $city)
@if($user->city ==1)
<option selected value="1" > {{ $city->name_ru }}</option>
@elseif($user->city ==2)
<option selected value="2" > {{ $city->name_ru }}</option>
....
@endif
@endforeach
如果我尝试这个:
@foreach(App\City::get() as $city)
@if($user->city ==1)
<option selected value="1" > {{ $city->name_ru }}</option>
@endif
@endforeach
@foreach(App\City::get() as $city)
@if($user->city ==2)
<option selected value="2" > {{ $city->name_ru }}</option>
@endif
@endforeach
@foreach(App\City::get() as $city)
@if($user->city ==3)
<option selected value="3" > {{ $city->name_ru }}</option>
@endif
@endforeach
I get:
<option selected value="2" > cityA</option>
<option selected value="2" > cityB</option>
<option selected value="2" > cityC</option>
请帮助
您不应该在视图中使用模型查询,因为这是一种不好的做法,因为您没有遵循 MVC 模式。你可以试试这个:
在你的控制器内部:
class UsersController extends Controller {
public function users() {
$users = User::with('city')->get();
$cities = City::all();
return view('view_name', compact('users', 'cities'));
}
}
在你的刀片视图中,你可以使用ternary operator
像这样:
@foreach($users as $user)
<select>
@foreach($cities as $city)
<option value="{{ $city->id }}" {{ ($user->city->id == $city->id) ? 'selected' : '' }}>
{{ $city->name }}
</option>
@endforeach
</select>
@endforeach
希望这可以帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)