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',
+ ];
+ }
+}