ルールの一覧
コントローラーでのバリデーション
class UserController extends Controller
{
public function store(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|min:8|confirmed',
]);
// バリデーション成功後の処理
User::create($validatedData);
}
}
PHPフォームリクエストの使用
独立したフォームリクエストクラスを作成し、rules()
メソッド内でバリデーションルールを定義します。これにより、コントローラーがスリムになり、バリデーションロジックを再利用できます。
class StoreUserRequest extends FormRequest
{
public function rules()
{
return [
'name' => 'required|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|min:8|confirmed',
];
}
}
PHPclass UserController extends Controller
{
public function store(StoreUserRequest $request)
{
// バリデーション済みのデータを使用
$validatedData = $request->validated();
User::create($validatedData);
}
}
PHPカスタムバリデーションルールの作成
Validator::extend('uppercase', function ($attribute, $value, $parameters, $validator) {
return strtoupper($value) === $value;
});
// 使用例
$request->validate([
'name' => 'required|uppercase',
]);
PHP条件付きバリデーション
$request->validate([
'email' => 'required_if:contact_method,email',
'phone' => 'required_if:contact_method,phone',
]);
PHPエラーメッセージのカスタマイズ
$messages = [
'required' => 'The :attribute field is required.',
'email.unique' => 'This email is already registered.',
];
$validator = Validator::make($request->all(), [
'name' => 'required|max:255',
'email' => 'required|email|unique:users',
], $messages);
PHPバリデーション後の処理
if ($validator->fails()) {
return redirect('post/create')
->withErrors($validator)
->withInput();
}
// バリデーション成功後の処理
$validatedData = $validator->validated();
User::create($validatedData);
PHP
コメント