我是 Laravel 框架的初学者。
我正在努力声明请求数据的验证。
我的表单中有一些复选框,并且必须至少选中其中一个复选框才能提交到数据库。
<input type="hidden" name="has_a_type" value="0">
<input type="checkbox" name="has_a_type" value="1">
<input type="hidden" name="has_b_type" value="0">
<input type="checkbox" name="has_b_type" value="1">
<input type="hidden" name="has_c_type" value="0">
<input type="checkbox" name="has_c_type" value="1">
<input type="hidden" name="has_d_type" value="0">
<input type="checkbox" name="has_d_type" value="1">
<input type="hidden" name="has_e_type" value="0">
<input type="checkbox" name="has_e_type" value="1">
<input type="hidden" name="has_f_type" value="0">
<input type="checkbox" name="has_f_type" value="1">
public function store(Request $request) {
$request = $request->validate([
'form_id' => 'required',
'first_name' => 'required',
'last_name' => 'required',
'email' => 'required',
'has_a_type' => 'required',
'has_b_type' => 'required',
'has_c_type' => 'required',
'has_d_type' => 'required',
'has_e_type' => 'required',
'has_f_type' => 'required',
]);
}
用户提交表单时,必须至少选择一种表单类型。 我怎样才能做到这一点?
我可以通过在验证代码下添加以下代码来检查。
if (!($request['has_a_type'] || $request['has_b_type'] || $request['has_c_type'] || $request['has_d_type'] || $request['has_e_type'] || $request['has_f_type'])) {
return ...->withError();
}
但我想知道有没有办法在验证中检查这一点。
谢谢你。
搜索文档,我看到了 required_without_all 规则,这可能就是您所需要的。
required_without_all:foo,bar,...
仅当所有其他指定字段都为空或不存在时,验证字段必须存在且不为空。
您可以在
bar,...
参数列表中指定其他复选框,例如
'has_a_type' => 'required_without_all', 'has_b_type', 'has_c_type' ...