From f3568ab277facc6db1c8caa3f970857157121aa9 Mon Sep 17 00:00:00 2001 From: parsa aghaei Date: Tue, 23 Jun 2026 18:04:48 +0330 Subject: [PATCH] 0.1: replace Request with FormRequest in all controllers --- .../Controllers/Blog/CategoryController.php | 36 +++---------- app/Http/Controllers/Blog/PostController.php | 50 +++---------------- app/Http/Controllers/Blog/TagController.php | 30 +++-------- .../Controllers/Website/AboutMeController.php | 13 ++--- .../Controllers/Website/ProjectController.php | 7 +-- .../Requests/Blog/StoreCategoryRequest.php | 24 +++++++++ app/Http/Requests/Blog/StorePostRequest.php | 31 ++++++++++++ app/Http/Requests/Blog/StoreTagRequest.php | 21 ++++++++ .../Requests/Blog/UpdateCategoryRequest.php | 26 ++++++++++ app/Http/Requests/Blog/UpdatePostRequest.php | 31 ++++++++++++ app/Http/Requests/Blog/UpdateTagRequest.php | 23 +++++++++ .../Requests/Website/StoreAboutMeRequest.php | 20 ++++++++ .../Requests/Website/StoreProjectRequest.php | 26 ++++++++++ .../Requests/Website/UpdateAboutMeRequest.php | 20 ++++++++ .../Requests/Website/UpdateProjectRequest.php | 26 ++++++++++ 15 files changed, 277 insertions(+), 107 deletions(-) create mode 100644 app/Http/Requests/Blog/StoreCategoryRequest.php create mode 100644 app/Http/Requests/Blog/StorePostRequest.php create mode 100644 app/Http/Requests/Blog/StoreTagRequest.php create mode 100644 app/Http/Requests/Blog/UpdateCategoryRequest.php create mode 100644 app/Http/Requests/Blog/UpdatePostRequest.php create mode 100644 app/Http/Requests/Blog/UpdateTagRequest.php create mode 100644 app/Http/Requests/Website/StoreAboutMeRequest.php create mode 100644 app/Http/Requests/Website/StoreProjectRequest.php create mode 100644 app/Http/Requests/Website/UpdateAboutMeRequest.php create mode 100644 app/Http/Requests/Website/UpdateProjectRequest.php diff --git a/app/Http/Controllers/Blog/CategoryController.php b/app/Http/Controllers/Blog/CategoryController.php index 98a5fca..324aa82 100644 --- a/app/Http/Controllers/Blog/CategoryController.php +++ b/app/Http/Controllers/Blog/CategoryController.php @@ -3,11 +3,12 @@ namespace App\Http\Controllers\Blog; use App\Http\Controllers\Controller; +use App\Http\Requests\Blog\StoreCategoryRequest; +use App\Http\Requests\Blog\UpdateCategoryRequest; use App\Http\Resources\CategoryResource; use App\Http\Resources\PostResource; use App\Models\Blog\Category; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Validator; class CategoryController extends Controller { @@ -114,43 +115,18 @@ public function getCategoryWithPosts(Request $request, $slug) // ذخیره یک دسته‌بندی جدید - public function store(Request $request) + public function store(StoreCategoryRequest $request) { - $validator = Validator::make($request->all(), [ - 'name' => 'required|string|max:255|unique:categories,name', - 'slug' => 'required|string|unique:categories,slug', - 'description' => 'required|string', - 'short_description' => 'nullable|string|max:500', - 'image' => 'nullable|url', - ]); - - if ($validator->fails()) { - return response()->json($validator->errors(), 422); - } - - $category = Category::create($validator->validated()); + $category = Category::create($request->validated()); return new CategoryResource($category); } // به‌روزرسانی یک دسته‌بندی خاص - public function update(Request $request, $id) + public function update(UpdateCategoryRequest $request, $id) { $category = Category::findOrFail($id); - - $validator = Validator::make($request->all(), [ - 'name' => 'sometimes|required|string|max:255|unique:categories,name,' . $category->id, - 'slug' => 'sometimes|required|string|unique:categories,slug,' . $category->id, - 'description' => 'sometimes|required|string', - 'short_description' => 'nullable|string|max:500', - 'image' => 'nullable|url', - ]); - - if ($validator->fails()) { - return response()->json($validator->errors(), 422); - } - - $category->update($validator->validated()); + $category->update($request->validated()); return new CategoryResource($category); } diff --git a/app/Http/Controllers/Blog/PostController.php b/app/Http/Controllers/Blog/PostController.php index 7369582..fcb53c3 100644 --- a/app/Http/Controllers/Blog/PostController.php +++ b/app/Http/Controllers/Blog/PostController.php @@ -3,10 +3,11 @@ namespace App\Http\Controllers\Blog; use App\Http\Controllers\Controller; +use App\Http\Requests\Blog\StorePostRequest; +use App\Http\Requests\Blog\UpdatePostRequest; use App\Http\Resources\PostResource; use App\Models\Blog\Post; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Validator; class PostController extends Controller { @@ -51,28 +52,9 @@ public function show($slug) } // ذخیره یک پست جدید - public function store(Request $request) + public function store(StorePostRequest $request) { - $validator = Validator::make($request->all(), [ - 'title' => 'required|string|max:255', - 'body' => 'required|string', - 'excerpt' => 'nullable|string|max:500', - 'slug' => 'required|string|unique:posts,slug', - 'author_id' => 'required|exists:users,id', - 'category_id' => 'required|exists:categories,id', - 'featured_image' => 'nullable|url', - 'views' => 'nullable|integer', - 'likes' => 'nullable|integer', - 'published_at' => 'nullable|date', - 'tags' => 'nullable|array', - 'tags.*' => 'exists:tags,id', - ]); - - if ($validator->fails()) { - return response()->json($validator->errors(), 422); - } - - $post = Post::create($validator->validated()); + $post = Post::create($request->validated()); if ($request->has('tags')) { $post->tags()->attach($request->tags); @@ -82,30 +64,10 @@ public function store(Request $request) } // به‌روزرسانی یک پست خاص - public function update(Request $request, $id) + public function update(UpdatePostRequest $request, $id) { $post = Post::findOrFail($id); - - $validator = Validator::make($request->all(), [ - 'title' => 'sometimes|required|string|max:255', - 'body' => 'sometimes|required|string', - 'excerpt' => 'nullable|string|max:500', - 'slug' => 'sometimes|required|string|unique:posts,slug,' . $post->id, - 'author_id' => 'sometimes|required|exists:users,id', - 'category_id' => 'sometimes|required|exists:categories,id', - 'featured_image' => 'nullable|url', - 'views' => 'nullable|integer', - 'likes' => 'nullable|integer', - 'published_at' => 'nullable|date', - 'tags' => 'nullable|array', - 'tags.*' => 'exists:tags,id', - ]); - - if ($validator->fails()) { - return response()->json($validator->errors(), 422); - } - - $post->update($validator->validated()); + $post->update($request->validated()); if ($request->has('tags')) { $post->tags()->sync($request->tags); diff --git a/app/Http/Controllers/Blog/TagController.php b/app/Http/Controllers/Blog/TagController.php index 22658ee..f45fbd1 100644 --- a/app/Http/Controllers/Blog/TagController.php +++ b/app/Http/Controllers/Blog/TagController.php @@ -3,10 +3,11 @@ namespace App\Http\Controllers\Blog; use App\Http\Controllers\Controller; +use App\Http\Requests\Blog\StoreTagRequest; +use App\Http\Requests\Blog\UpdateTagRequest; use App\Http\Resources\TagResource; use App\Models\Blog\Tag; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Validator; class TagController extends Controller { @@ -25,37 +26,18 @@ public function show($id) } // ذخیره یک تگ جدید - public function store(Request $request) + public function store(StoreTagRequest $request) { - $validator = Validator::make($request->all(), [ - 'name' => 'required|string|max:255|unique:tags,name', - 'slug' => 'required|string|unique:tags,slug', - ]); - - if ($validator->fails()) { - return response()->json($validator->errors(), 422); - } - - $tag = Tag::create($validator->validated()); + $tag = Tag::create($request->validated()); return new TagResource($tag); } // به‌روزرسانی یک تگ خاص - public function update(Request $request, $id) + public function update(UpdateTagRequest $request, $id) { $tag = Tag::findOrFail($id); - - $validator = Validator::make($request->all(), [ - 'name' => 'sometimes|required|string|max:255|unique:tags,name,' . $tag->id, - 'slug' => 'sometimes|required|string|unique:tags,slug,' . $tag->id, - ]); - - if ($validator->fails()) { - return response()->json($validator->errors(), 422); - } - - $tag->update($validator->validated()); + $tag->update($request->validated()); return new TagResource($tag); } diff --git a/app/Http/Controllers/Website/AboutMeController.php b/app/Http/Controllers/Website/AboutMeController.php index 2084130..dc481a5 100644 --- a/app/Http/Controllers/Website/AboutMeController.php +++ b/app/Http/Controllers/Website/AboutMeController.php @@ -2,9 +2,10 @@ namespace App\Http\Controllers\Website; -use Illuminate\Http\Request; -use App\Models\Website\AboutMe; use App\Http\Controllers\Controller; +use App\Http\Requests\Website\StoreAboutMeRequest; +use App\Http\Requests\Website\UpdateAboutMeRequest; +use App\Models\Website\AboutMe; class AboutMeController extends Controller { @@ -20,16 +21,16 @@ public function show($id) return response()->json($aboutMe); } - public function store(Request $request) + public function store(StoreAboutMeRequest $request) { - $aboutMe = AboutMe::create($request->all()); + $aboutMe = AboutMe::create($request->validated()); return response()->json($aboutMe, 201); } - public function update(Request $request, $id) + public function update(UpdateAboutMeRequest $request, $id) { $aboutMe = AboutMe::findOrFail($id); - $aboutMe->update($request->all()); + $aboutMe->update($request->validated()); return response()->json($aboutMe); } diff --git a/app/Http/Controllers/Website/ProjectController.php b/app/Http/Controllers/Website/ProjectController.php index 81a4bff..eec335a 100644 --- a/app/Http/Controllers/Website/ProjectController.php +++ b/app/Http/Controllers/Website/ProjectController.php @@ -3,7 +3,8 @@ namespace App\Http\Controllers\website; use App\Http\Controllers\Controller; -use Illuminate\Http\Request; +use App\Http\Requests\Website\StoreProjectRequest; +use App\Http\Requests\Website\UpdateProjectRequest; use App\Models\Website\Project; use App\Models\Website\ProjectCategory; @@ -53,7 +54,7 @@ public function index($locale): \Illuminate\Http\JsonResponse } - public function store(Request $request) + public function store(StoreProjectRequest $request) { $project = Project::create($request->only(['category_id', 'image1', 'image2'])); @@ -92,7 +93,7 @@ public function show($id) } - public function update(Request $request, $id) + public function update(UpdateProjectRequest $request, $id) { $project = Project::findOrFail($id); $project->update($request->only(['category_id', 'image1', 'image2'])); diff --git a/app/Http/Requests/Blog/StoreCategoryRequest.php b/app/Http/Requests/Blog/StoreCategoryRequest.php new file mode 100644 index 0000000..a39ef62 --- /dev/null +++ b/app/Http/Requests/Blog/StoreCategoryRequest.php @@ -0,0 +1,24 @@ + 'required|string|max:255|unique:categories,name', + 'slug' => 'required|string|unique:categories,slug', + 'description' => 'required|string', + 'short_description' => 'nullable|string|max:500', + 'image' => 'nullable|url', + ]; + } +} diff --git a/app/Http/Requests/Blog/StorePostRequest.php b/app/Http/Requests/Blog/StorePostRequest.php new file mode 100644 index 0000000..c76abe0 --- /dev/null +++ b/app/Http/Requests/Blog/StorePostRequest.php @@ -0,0 +1,31 @@ + 'required|string|max:255', + 'body' => 'required|string', + 'excerpt' => 'nullable|string|max:500', + 'slug' => 'required|string|unique:posts,slug', + 'author_id' => 'required|exists:users,id', + 'category_id' => 'required|exists:categories,id', + 'featured_image' => 'nullable|url', + 'views' => 'nullable|integer', + 'likes' => 'nullable|integer', + 'published_at' => 'nullable|date', + 'tags' => 'nullable|array', + 'tags.*' => 'exists:tags,id', + ]; + } +} diff --git a/app/Http/Requests/Blog/StoreTagRequest.php b/app/Http/Requests/Blog/StoreTagRequest.php new file mode 100644 index 0000000..ad4a26d --- /dev/null +++ b/app/Http/Requests/Blog/StoreTagRequest.php @@ -0,0 +1,21 @@ + 'required|string|max:255|unique:tags,name', + 'slug' => 'required|string|unique:tags,slug', + ]; + } +} diff --git a/app/Http/Requests/Blog/UpdateCategoryRequest.php b/app/Http/Requests/Blog/UpdateCategoryRequest.php new file mode 100644 index 0000000..0cce528 --- /dev/null +++ b/app/Http/Requests/Blog/UpdateCategoryRequest.php @@ -0,0 +1,26 @@ +route('category'); + + return [ + 'name' => 'sometimes|required|string|max:255|unique:categories,name,' . $categoryId, + 'slug' => 'sometimes|required|string|unique:categories,slug,' . $categoryId, + 'description' => 'sometimes|required|string', + 'short_description' => 'nullable|string|max:500', + 'image' => 'nullable|url', + ]; + } +} diff --git a/app/Http/Requests/Blog/UpdatePostRequest.php b/app/Http/Requests/Blog/UpdatePostRequest.php new file mode 100644 index 0000000..b50f7b1 --- /dev/null +++ b/app/Http/Requests/Blog/UpdatePostRequest.php @@ -0,0 +1,31 @@ + 'sometimes|required|string|max:255', + 'body' => 'sometimes|required|string', + 'excerpt' => 'nullable|string|max:500', + 'slug' => 'sometimes|required|string|unique:posts,slug,' . $this->route('post'), + 'author_id' => 'sometimes|required|exists:users,id', + 'category_id' => 'sometimes|required|exists:categories,id', + 'featured_image' => 'nullable|url', + 'views' => 'nullable|integer', + 'likes' => 'nullable|integer', + 'published_at' => 'nullable|date', + 'tags' => 'nullable|array', + 'tags.*' => 'exists:tags,id', + ]; + } +} diff --git a/app/Http/Requests/Blog/UpdateTagRequest.php b/app/Http/Requests/Blog/UpdateTagRequest.php new file mode 100644 index 0000000..7321558 --- /dev/null +++ b/app/Http/Requests/Blog/UpdateTagRequest.php @@ -0,0 +1,23 @@ +route('tag'); + + return [ + 'name' => 'sometimes|required|string|max:255|unique:tags,name,' . $tagId, + 'slug' => 'sometimes|required|string|unique:tags,slug,' . $tagId, + ]; + } +} diff --git a/app/Http/Requests/Website/StoreAboutMeRequest.php b/app/Http/Requests/Website/StoreAboutMeRequest.php new file mode 100644 index 0000000..cccef8b --- /dev/null +++ b/app/Http/Requests/Website/StoreAboutMeRequest.php @@ -0,0 +1,20 @@ + 'required|string|max:255', + ]; + } +} diff --git a/app/Http/Requests/Website/StoreProjectRequest.php b/app/Http/Requests/Website/StoreProjectRequest.php new file mode 100644 index 0000000..5ce6ead --- /dev/null +++ b/app/Http/Requests/Website/StoreProjectRequest.php @@ -0,0 +1,26 @@ + 'required|exists:website_project_categories,id', + 'image1' => 'required|string|max:255', + 'image2' => 'required|string|max:255', + 'title_fa' => 'required|string|max:255', + 'title_en' => 'required|string|max:255', + 'description_fa' => 'required|string', + 'description_en' => 'required|string', + ]; + } +} diff --git a/app/Http/Requests/Website/UpdateAboutMeRequest.php b/app/Http/Requests/Website/UpdateAboutMeRequest.php new file mode 100644 index 0000000..76efea8 --- /dev/null +++ b/app/Http/Requests/Website/UpdateAboutMeRequest.php @@ -0,0 +1,20 @@ + 'sometimes|required|string|max:255', + ]; + } +} diff --git a/app/Http/Requests/Website/UpdateProjectRequest.php b/app/Http/Requests/Website/UpdateProjectRequest.php new file mode 100644 index 0000000..5d66cf6 --- /dev/null +++ b/app/Http/Requests/Website/UpdateProjectRequest.php @@ -0,0 +1,26 @@ + 'sometimes|required|exists:website_project_categories,id', + 'image1' => 'sometimes|required|string|max:255', + 'image2' => 'sometimes|required|string|max:255', + 'title_fa' => 'sometimes|required|string|max:255', + 'title_en' => 'sometimes|required|string|max:255', + 'description_fa' => 'sometimes|required|string', + 'description_en' => 'sometimes|required|string', + ]; + } +}