JSONで投げられる値で
{
address: "Tokyo",
entries: [
{name: "", email: ""},
{name: "", email: ""}
{name: "", email: ""}
]
}
みたいなのをValidateしたい時。
単にVlidateすればいい場合
FormRequestのルールに
<?php
public function rules()
{
return [
'entries.name' => ['required'],
];
}
と書いておけばいい。
エラーメッセージは
こんな感じ。
<?php
public function messages()
{
return [
'entries.name.required' => '氏名は必須です。',
];
}
配列のインデックスをエラーメッセージに入れたい場合
上述の場合、
<?php
public function rules()
{
return [
'entries.*.name' => ['required'],
];
}
と書いてもValidateしてくれる。そして、この指定をした場合にはエラーメッセージに
<?php
public function messages()
{
return [
'entries.*.name.required' => '氏名は必須です。',
];
}
としておくと、エラーで返ってくるJSONが
{ errors:
entries.0.name: '氏名は必須です。',
entries.1.name: '氏名は必須です。',
となる。
このエラーメッセージに配列のインデックスを入れたい場合は、
stackoverflow.com
を参考にして
<?php
public function messages()
{
$messages = [];
foreach ($this->request->get('entries') as $key => $entry) {
$messages['entries.' . $key . '.name.required'] = . $key . 'の氏名は必須です。';
}
return $messages;
}
としておくといける。