使用数组验证值,Laravel 验证。值必须是数组中的一个
Validating a value with an array, Laravel validation. value must be one in the array
我正在尝试通过检查数组中的值来验证该值,这是我目前所拥有的:
$agency_names = Session::get('config.agency-names');
$request->validate([
'agency-name' => 'required|array:' . $agency_names . ''
]);
$agency_names(输出):
0:
AgencyID: "A1169"
AgencyName: "19 London"
AgencyType: "Agency Plus"
1:
AgencyID: "A1095"
AgencyName: "Abbeville Nannies"
AgencyType: "Affiliate"
如有任何帮助,我们将不胜感激。
更新代码:
$agencies = Session::get('config.agency-names');
$names = array_map(fn($agency_data): string => $agency_data->AgencyName, $agencies);
$request->validate(['agency-name' => 'required', Rule::in($names)]);
更新代码(已解决)
$agencies = Session::get('config.agency-names');
$agency_names = array();
for ($x = 0; $x < count($agencies['Agencies']); $x++) {
$name = $agencies['Agencies'][$x]["AgencyName"];
array_push($agency_names, $name);
}
$request->validate(['agency-name' => ['required_if:referral,no', Rule::in($agency_names)]]);
查看有关 Laravel validaion rules 的文档,特别是 in
规则。
假设$agency_names
是一个数组,你可以这样做:
use Illuminate\Validation\Rule;
...
$request->validate([
'agency-name' => [
'required',
Rule::in($agency_names),
]);
PS。看到你的$agency_names
数组的结构,你应该先用$names = array_map(fn($agency_data): string => $agency_data->AgencyName, $agency_names);
映射它。
我还建议将 $agency_names
重命名为 $agencies
,因为变量名称具有误导性。
我正在尝试通过检查数组中的值来验证该值,这是我目前所拥有的:
$agency_names = Session::get('config.agency-names');
$request->validate([
'agency-name' => 'required|array:' . $agency_names . ''
]);
$agency_names(输出):
0:
AgencyID: "A1169"
AgencyName: "19 London"
AgencyType: "Agency Plus"
1:
AgencyID: "A1095"
AgencyName: "Abbeville Nannies"
AgencyType: "Affiliate"
如有任何帮助,我们将不胜感激。
更新代码:
$agencies = Session::get('config.agency-names');
$names = array_map(fn($agency_data): string => $agency_data->AgencyName, $agencies);
$request->validate(['agency-name' => 'required', Rule::in($names)]);
更新代码(已解决)
$agencies = Session::get('config.agency-names');
$agency_names = array();
for ($x = 0; $x < count($agencies['Agencies']); $x++) {
$name = $agencies['Agencies'][$x]["AgencyName"];
array_push($agency_names, $name);
}
$request->validate(['agency-name' => ['required_if:referral,no', Rule::in($agency_names)]]);
查看有关 Laravel validaion rules 的文档,特别是 in
规则。
假设$agency_names
是一个数组,你可以这样做:
use Illuminate\Validation\Rule;
...
$request->validate([
'agency-name' => [
'required',
Rule::in($agency_names),
]);
PS。看到你的$agency_names
数组的结构,你应该先用$names = array_map(fn($agency_data): string => $agency_data->AgencyName, $agency_names);
映射它。
我还建议将 $agency_names
重命名为 $agencies
,因为变量名称具有误导性。