<?phpnamespace App\Http\Requests;use Illuminate\Foundation\Http\FormRequest;class StorePostRequest extends FormRequest{ /** * 이 리퀘스트를 실행할 권한이 있는지 판정한다 */ public function authorize(): bool { return true; } /** * 이 리퀘스트에 적용할 검증 규칙을 반환한다 * * @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string> */ public function rules(): array { return [ 'title' => 'required|string|max:255', 'body' => 'required|string', 'email' => 'required|email|unique:posts', ]; }}
이 리퀘스트를 실행할 권한이 있는지를 판정합니다.
true를 반환하면 인가 OK, false를 반환하면 403 응답이 자동적으로 반환됩니다.인증된 사용자만 허가하는 경우, auth()->check()로 확인할 수 있습니다.
튜토리얼에서는 true를 반환해 두면 문제없습니다.
폼 리퀘스트는 컨트롤러 메서드의 타입 힌트로서 지정하는 것만으로 사용할 수 있습니다.
컨트롤러가 호출되기 전에 검증이 실행되기 때문에, 메서드 내에 검증 코드를 작성할 필요는 없습니다.
use App\Http\Requests\StorePostRequest;class PostController extends Controller{ public function store(StorePostRequest $request): RedirectResponse { // 여기에 도달한 시점에서 검증 완료 $validated = $request->validated(); Post::create($validated); return redirect('/posts'); }}
use App\Http\Controllers\PostController;Route::get('/posts/create', [PostController::class, 'create']);Route::post('/posts', [PostController::class, 'store']);
2
폼 리퀘스트의 작성
php artisan make:request StorePostRequest
public function rules(): array{ return [ 'title' => 'required|string|max:255', 'body' => 'required|string', ];}public function authorize(): bool{ return true;}
3
컨트롤러의 구현
use App\Http\Requests\StorePostRequest;use App\Models\Post;class PostController extends Controller{ public function create(): View { return view('posts.create'); } public function store(StorePostRequest $request): RedirectResponse { Post::create($request->validated()); return redirect('/posts'); }}