在 Laravel 中使用 Blade 模板引擎时,确保复选框在表单提交后保持选中状态可以通过检查表单数据并与复选框的值进行比较来实现。以下是一个基本的示例,展示了如何在 Blade 模板中实现这一功能:
<form action="/submit" method="POST">
@csrf
<!-- 假设我们有一个名为 `interests` 的字段,用户可以选择多个兴趣 -->
<label>
<input type="checkbox" name="interests[]" value="sports" {{ in_array('sports', old('interests', $user->interests ?? [])) ? 'checked' : '' }}>
Sports
</label><br>
<label>
<input type="checkbox" name="interests[]" value="music" {{ in_array('music', old('interests', $user->interests ?? [])) ? 'checked' : '' }}>
Music
</label><br>
<label>
<input type="checkbox" name="interests[]" value="reading" {{ in_array('reading', old('interests', $user->interests ?? [])) ? 'checked' : '' }}>
Reading
</label><br>
<button type="submit">Submit</button>
</form>
@csrf
: 这是 Laravel 的 CSRF 保护指令,确保表单提交的安全性。name
属性: 使用数组形式的 name
属性(如 interests[]
),这样可以在表单提交时接收多个值。old()
函数: 这个函数用于在表单验证失败并重新显示表单时,恢复用户之前输入的数据。old('interests')
返回用户之前选择的兴趣数组。$user->interests
: 假设 $user
是当前登录用户的数据模型实例,$user->interests
是存储用户兴趣的字段。如果没有这样的字段或用户未登录,可以使用空数组作为默认值。in_array()
函数: 这个 PHP 函数用于检查一个值是否存在于数组中。如果用户的兴趣包含当前复选框的值,则设置 checked
属性,使复选框保持选中状态。在控制器中处理表单提交时,确保正确地接收和存储用户的兴趣:
public function store(Request $request)
{
// 验证请求数据
$validatedData = $request->validate([
'interests' => 'required|array',
'interests.*' => 'string',
]);
// 假设 $user 是当前登录用户的数据模型实例
$user->interests = $validatedData['interests'];
$user->save();
// 重定向或其他逻辑...
}
old()
函数可以确保用户之前输入的数据不会丢失,有助于保持数据的完整性和一致性。通过这种方式,可以确保无论表单提交成功与否,用户的选项都能得到正确的恢复和显示。
领取专属 10元无门槛券
手把手带您无忧上云