From dfecc9a0facc05d0e28c311da145bd3d13110501 Mon Sep 17 00:00:00 2001 From: Anas Ouda Date: Sun, 12 Jan 2025 12:06:04 +0200 Subject: [PATCH] solve the validation test --- app/Http/Controllers/BuildingController.php | 2 +- app/Http/Controllers/PostController.php | 5 ++-- app/Http/Controllers/ProfileController.php | 3 ++ app/Http/Controllers/UserController.php | 2 +- app/Http/Requests/StoreBuildingRequest.php | 8 ++++++ app/Http/Requests/StoreItemRequest.php | 29 +++++++++++++++++++ app/Rules/Uppercase.php | 21 ++++++++++++++ resources/views/products/create.blade.php | 5 ++++ resources/views/projects/create.blade.php | 32 +++++++++++++++++++-- resources/views/teams/create.blade.php | 2 +- 10 files changed, 102 insertions(+), 7 deletions(-) create mode 100644 app/Http/Requests/StoreItemRequest.php create mode 100644 app/Rules/Uppercase.php diff --git a/app/Http/Controllers/BuildingController.php b/app/Http/Controllers/BuildingController.php index 9c752ab8..d0dbb246 100644 --- a/app/Http/Controllers/BuildingController.php +++ b/app/Http/Controllers/BuildingController.php @@ -17,7 +17,7 @@ public function create() // TASK: Customize the validation error message to say "Please enter the name" public function store(StoreBuildingRequest $request) { - Building::create($validator->validated()); + Building::create($request->all()); return 'Success'; } diff --git a/app/Http/Controllers/PostController.php b/app/Http/Controllers/PostController.php index cd0808b7..459aaa0a 100644 --- a/app/Http/Controllers/PostController.php +++ b/app/Http/Controllers/PostController.php @@ -9,10 +9,11 @@ class PostController extends Controller { public function store(Request $request) { - $request->validate( + $request->validate([ // ... TASK: write validation here so that "title" field // would be required and unique in the "posts" DB table - ); + 'title' => 'required|unique:posts' + ]); // Saving the post Post::create(['title' => $request->title]); diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index bb6bab39..03aa10db 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -9,10 +9,13 @@ class ProfileController extends Controller public function update(Request $request) { $request->validate([ + 'profile.name' => 'required', + 'profile.email' => 'required' // TASK: imagine that in the Blade the fields are // // // Write validation rules, so both name and email are required + ]); auth()->user()->update($request->profile ?? []); diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 404d7471..0523664a 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -11,7 +11,7 @@ public function update(User $user, UpdateUserRequest $request) { // TASK: change this line to not allow is_admin field to be updated // Update only the fields that are validated in UpdateUserRequest - $user->update($request->all()); + $user->update($request->except('is_admin')); return 'Success'; } diff --git a/app/Http/Requests/StoreBuildingRequest.php b/app/Http/Requests/StoreBuildingRequest.php index fbd8c064..c03f0c12 100644 --- a/app/Http/Requests/StoreBuildingRequest.php +++ b/app/Http/Requests/StoreBuildingRequest.php @@ -30,4 +30,12 @@ public function rules() 'name' => 'required' ]; } + + +public function messages() +{ + return [ + 'name.required' => 'Please enter the name' + ]; +} } diff --git a/app/Http/Requests/StoreItemRequest.php b/app/Http/Requests/StoreItemRequest.php new file mode 100644 index 00000000..85088e05 --- /dev/null +++ b/app/Http/Requests/StoreItemRequest.php @@ -0,0 +1,29 @@ + + */ + public function rules(): array + { + return [ + 'name' => 'required', + 'description' => 'required' + ]; + } +} diff --git a/app/Rules/Uppercase.php b/app/Rules/Uppercase.php new file mode 100644 index 00000000..0e900fbd --- /dev/null +++ b/app/Rules/Uppercase.php @@ -0,0 +1,21 @@ +
+ @error('name') + + {{ $message }} + + @enderror {{-- TASK: show the validation error for the specific "name" field --}} {{-- using one Blade directive: pseudo-code below --}} {{-- @directive --}} diff --git a/resources/views/projects/create.blade.php b/resources/views/projects/create.blade.php index dc19b63b..055b1432 100644 --- a/resources/views/projects/create.blade.php +++ b/resources/views/projects/create.blade.php @@ -4,15 +4,43 @@ {{-- in case of title/description empty, visitor should see --}} {{-- "The name field is required." and "The description field is required." --}} + + + +
@csrf + + @if ($errors->any()) + + @endif + + Title:
- + + @error('title') +
+ {{ $message }} + @enderror +

+ + Description:
- + + @error('description') +
+ {{ $message }} + @enderror +

+ +
diff --git a/resources/views/teams/create.blade.php b/resources/views/teams/create.blade.php index 2d003c05..37ae1412 100644 --- a/resources/views/teams/create.blade.php +++ b/resources/views/teams/create.blade.php @@ -3,7 +3,7 @@ Name:
{{-- TASK: change this field so it would contain old value after validation error --}} - +