環境
CentOS: 7.4
PHP: 7.2
Laravel: 5.6
例えばこんなパターン
一度に複数のユーザーが登録できる機能があった場合。
sample.html
<form>
<ul>
<li>
<input type="text" name="users[][name]">
<input type="text" name="users[][email]">
</li>
<li>
<input type="text" name="users[][name]">
<input type="text" name="users[][email]">
</li>
<!-- つづく -->
</ul>
</form>
このリクエストの中身を見てみると user
という配列の中に、さらに連想配列が入ったような形になっています。
$user = [
['name' => 'たなか', 'email' => 'tanaka@test.com'],
['name' => 'すずき', 'email' => 'suzuki@test.com'],
// つづく
]
このようなリクエストを Laravel でバリデーションするときは「ドット記法」を利用します。
UserController.php
$request->varidate(
'users.*.name' => 'required|string',
'users.*.email' => 'required|email',
);
users.*
と書くと、users
に含まれるすべての配列に対してバリデーションを行うことになります。
今回は users
内の連想配列に対してバリデーションを行いたいので、users.*
にもう1つドットをつなげて users.*.name
などとします。