В моём Request классе правила сокращенно выглядят так:
public function rules()
{
$rules = [
'detail_id' => 'required|array',
];
$detailId = $this->input('detail_id');
foreach ($detailId as $index => $value){
$rules["detail_id[".$index."]"] = 'json';
}
return $rules;
}
Дамп rules выглядит так
array:21 [▼
"detail_id" => "required|array"
"detail_id[0]" => "json"
"detail_id[1]" => "json"
"detail_id[2]" => "json"
"detail_id[3]" => "json"
"detail_id[4]" => "json"
"detail_id[5]" => "json"
]
Проверка является ли detail_id массивом выполняется, но проверка значений не происходит. Как выполнить проверку?
Ниже мои изыскания, которые меня не привели к цели, но может быть это поможет вам помочь мне.
В поиске определил, что rules() вызывается из класса
FormRequest методом getValidatorInstance.
Такой дамп
dd($factory->make(
$this->all(), $this->container->call([$this, 'rules']), $this->messages(), $this->attributes()
));
выглядит
Validator {#266 ▼
#translator: Translator {#100 ▶}
#presenceVerifier: DatabasePresenceVerifier {#101 ▶}
#container: Application {#3 ▶}
#failedRules: []
#messages: null
#data: array:5 [▼
"_method" => "PATCH"
"_token" => "yKG4oqNtBJmHIDGAYEwepoQZ13NVXsRPEWGV4oPJ"
"detail_id" => array:6 [▼
0 => "{"id":6,"base_detail_name":"\u30d7\u30ed\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\uff08\u8ffd\u52a0\u5206\uff09","base_image1":"images\\base_detail\\no-image.jpg","base_image2":"images\\base_detail\\no-image.jpg","base_price":54665,"base_unit":"\u540d","deleted_at":null}"
1 => "{id":...."deleted_at":null}"
2 => "{id":...."deleted_at":null}"
3 => "{id":...."deleted_at":null}"
4 => "{id":...."deleted_at":null}"
5 => "{id":...."deleted_at":null}"
]
]
#files: []
#rules: array:21 [▼
"detail_id" => array:2 [▼
0 => "required"
1 => "array"
]
"detail_id[0]" => array:1 [▼
0 => "json"
]
"detail_id[1]" => array:1 [▶]
"detail_id[2]" => array:1 [▶]
"detail_id[3]" => array:1 [▶]
"detail_id[4]" => array:1 [▶]
"detail_id[5]" => array:1 [▶]
]
#after: []
#customMessages: []
#fallbackMessages: []
#customAttributes: []
#customValues: []
#extensions: array:6 [▶]
#replacers: []
#sizeRules: array:4 [▶]
#numericRules: array:2 [▶]
#implicitRules: array:8 [▶]
}
Если нужны еще какие-то данные, я весь во внимании.
Размерности массивов иногда могут не совпадать, потому что в rules() проверяется 3 массива, и все связанное с ними я вычистил.