【问题标题】:Validating a value with an array, Laravel validation. value must be one in the array使用数组验证值,Laravel 验证。数组中的值必须为 1
【发布时间】:2021-12-24 16:53:03
【问题描述】:

我正在尝试通过检查值是否在数组中来验证值,这就是我目前所拥有的:

$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)]]);

【问题讨论】:

    标签: php laravel validation


    【解决方案1】:

    查看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 =&gt; $agency_data-&gt;AgencyName, $agency_names); 映射它。 我还建议将$agency_names 重命名为$agencies,因为变量名具有误导性。

    【讨论】:

    • 谢谢,我现在收到此错误 'ErrorException Array to string conversion' 我尝试使用 implode 方法将数组转换为字符串,但仍然出现相同的错误。
    • so.. agency-name 是一个数组吗?你能举个例子说明它可能包含什么吗? $agency_names 是什么?
    • 我已经为 $agency_names 数组添加了 JSON。我尝试循环数组并将“AgencyName”值推送到单独的数组中以代替使用。
    • 请将其添加到您的原始帖子中,而不是我的答案中。
    • 我看到您的编辑为$agency_names 添加了一个示例,但您仍然没有回答传入agency-name 的类型和一个示例。在我的回答中,我假设它是一个字符串,就像变量名所暗示的那样,但我认为您可能正在使用一个数组,因此会出现错误。
    猜你喜欢
    • 1970-01-01
    • 2019-12-18
    • 2021-09-12
    • 2020-10-20
    • 2019-08-08
    • 1970-01-01
    • 2020-05-30
    • 2022-01-16
    • 2017-06-04
    相关资源
    最近更新 更多