首页 > 解决方案 > Laravel 更多维度数组验证

问题描述

有一个请求。我如何验证它?我尝试使用 foreach,但我不工作。谢谢。

请求:

'show_data' => [
                    0 => [
                        'buyer_search_property_id' => 1,
                        'date_of_show' => '2019-01-01',
                        'comment' => 'Nice flat',
                    ],
                    1 => [
                        'buyer_search_property_id' => 2,
                        'date_of_show' => '2019-01-31',
                        'comment' => 'Too small',
                    ], etc... 

                ],

我试过这个,但它不起作用(当然...... :))

public function rules()
    {
        $rules = [];

        foreach ($this['show_data'] as $key => $item) {
            $rules["show_data[$key]['buyer_search_property_id']"] = 'required';
            $rules["show_data[$key]['date_of_show']"] = 'required|date';
            $rules["show_data[$key]['comment']"] = 'required';
        }

        return $rules;
    }

标签: laravel

解决方案


您可以像这样轻松地在 laravel 中验证数组:

public function rules()
{
    return [
        "show_data.*.buyer_search_propery_id" => "required",
        "show_data.*.date_of_show" => "required|date",
        "show_data.*.comment" => "required",
    ];
}

如果您希望您的方法有效,请执行以下操作:

public function rules()
{
    $rules = [];

    foreach ($this['show_data'] as $key => $item) {
        $rules["show_data.$key.buyer_search_property_id"] = 'required';
        $rules["show_data.key.date_of_show"] = 'required|date';
        $rules["show_data.$key.comment"] = 'required';
    }

    return $rules;
}

只需删除内部方括号和引号并在索引中添加点,因此更改$rules["show_data[$key]['date_of_show']"]$rules["show_data.$key.date_of_show"]


推荐阅读