📜  填充下拉 laravel 的旧值 - PHP (1)

📅  最后修改于: 2023-12-03 15:37:49.866000             🧑  作者: Mango

填充下拉 Laravel 的旧值 - PHP

当我们在 Laravel 中使用表单时,经常需要填充下拉选项的值。这在处理表单编辑时非常有用。例如,在编辑用户信息表单时,我们可以提供一个下拉选项,供用户选择其所在的城市。

当用户提交表单时,我们常常也需要填充旧值在下拉选项中。这可以让用户直接编辑现有值而不必重新选择。在本文中,我们将研究如何在 Laravel 中使用旧值填充下拉选项。

填充旧值

在 Laravel 中,我们可以使用 old 辅助函数轻松访问旧值。old 函数将返回上次提交的表单中一个具有给定名称的输入的值。我们可以在视图中使用 old 函数轻松访问这个值。例如,在 Blade 模板中,我们可以这样编写:

<select name="city">
    <option value="paris" {{ old('city') == 'paris' ? 'selected' : '' }}>Paris</option>
    <option value="new-york" {{ old('city') == 'new-york' ? 'selected' : '' }}>New York</option>
    <option value="tokyo" {{ old('city') == 'tokyo' ? 'selected' : '' }}>Tokyo</option>
    <option value="beijing" {{ old('city') == 'beijing' ? 'selected' : '' }}>Beijing</option>
</select>

在上面的示例中,我们在 option 元素上使用 old('city') 函数来获取旧值。如果当前值为 paris,则 old('city') 将返回 paris

我们还在选项元素上使用三元操作符 ?: 来检查旧值和当前值之间的差异。如果旧值和当前值相同,则我们需要将 selected 属性添加到该选项。

填充动态下拉选项

有时,我们需要动态生成下拉选项(例如,从数据库中读取)。在这种情况下,我们需要使用一些不同的技术来填充旧值。

首先,我们可以将选项数据绑定到控制器中。例如,如果我们正在编辑一个 User 模型,我们可以在控制器中设置以下代码:

$cities = City::all()->pluck('name', 'id');
return view('edit-user', compact('user', 'cities'));

在上面的代码中,我们获取了所有城市的名称和 ID,然后将其绑定到 cities 变量中。

接下来,我们可以将 cities 变量传递给 Blade 模板:

<select name="city">
    @foreach($cities as $id => $name)
    <option value="{{ $id }}" {{ old('city', $user->city_id) == $id ? 'selected' : '' }}>
        {{ $name }}
    </option>
    @endforeach
</select>

在上面的示例中,我们首先使用 Blade 的 foreach 循环来遍历 $cities 变量中的城市。我们还使用 old$user->city_id 来填充旧值。

如果我们刚刚提交表单,但在编辑表单时遇到错误,那么 old('city') 函数将返回旧值。否则,我们将使用 $user->city_id 来填充默认值。