From 254985ac9954cd990fb629eed5dcaa8128751fa5 Mon Sep 17 00:00:00 2001 From: PovilasKorop Date: Mon, 29 Nov 2021 15:47:54 +0200 Subject: [PATCH] Task 8 - customize validation messages --- README.md | 8 +++++ app/Http/Controllers/BuildingController.php | 24 ++++++++++++++ app/Http/Requests/StoreBuildingRequest.php | 33 +++++++++++++++++++ app/Models/Building.php | 13 ++++++++ ...21_11_29_133243_create_buildings_table.php | 32 ++++++++++++++++++ resources/views/buildings/create.blade.php | 11 +++++++ routes/web.php | 1 + tests/Feature/ValidationTest.php | 11 +++++-- 8 files changed, 130 insertions(+), 3 deletions(-) create mode 100644 app/Http/Controllers/BuildingController.php create mode 100644 app/Http/Requests/StoreBuildingRequest.php create mode 100644 app/Models/Building.php create mode 100644 database/migrations/2021_11_29_133243_create_buildings_table.php create mode 100644 resources/views/buildings/create.blade.php diff --git a/README.md b/README.md index c65289b..fd34915 100644 --- a/README.md +++ b/README.md @@ -88,3 +88,11 @@ Test method `test_update_forbidden_field()`. --- +## Task 8. Customize Validation Messages. + +In `app/Http/Controllers/BuildingController.php` file, in `store` method, the code uses `StoreBuildingRequest` Form Request class. Change that class to customize the validation rule for "name" field as "required", to show message "Please enter the name" instead of the default "The field name is required". + +Test method `test_custom_error_message()`. + +--- + diff --git a/app/Http/Controllers/BuildingController.php b/app/Http/Controllers/BuildingController.php new file mode 100644 index 0000000..9c752ab --- /dev/null +++ b/app/Http/Controllers/BuildingController.php @@ -0,0 +1,24 @@ +validated()); + + return 'Success'; + } +} diff --git a/app/Http/Requests/StoreBuildingRequest.php b/app/Http/Requests/StoreBuildingRequest.php new file mode 100644 index 0000000..fbd8c06 --- /dev/null +++ b/app/Http/Requests/StoreBuildingRequest.php @@ -0,0 +1,33 @@ + 'required' + ]; + } +} diff --git a/app/Models/Building.php b/app/Models/Building.php new file mode 100644 index 0000000..42382c5 --- /dev/null +++ b/app/Models/Building.php @@ -0,0 +1,13 @@ +id(); + $table->string('name'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('buildings'); + } +} diff --git a/resources/views/buildings/create.blade.php b/resources/views/buildings/create.blade.php new file mode 100644 index 0000000..827fd97 --- /dev/null +++ b/resources/views/buildings/create.blade.php @@ -0,0 +1,11 @@ +
+ @csrf + Name: +
+ +
+ {{-- TASK: Customize the validation error message to say "Please enter the name" --}} + @error('name') {{ $message }} @enderror +

+ +
diff --git a/routes/web.php b/routes/web.php index 81ec94b..53e67ec 100644 --- a/routes/web.php +++ b/routes/web.php @@ -20,6 +20,7 @@ Route::resource('products', \App\Http\Controllers\ProductController::class); Route::resource('teams', \App\Http\Controllers\TeamController::class); Route::resource('items', \App\Http\Controllers\ItemController::class); Route::put('users/{user}', [\App\Http\Controllers\UserController::class, 'update']); +Route::resource('buildings', \App\Http\Controllers\BuildingController::class); Route::get('/', function () { return view('welcome'); diff --git a/tests/Feature/ValidationTest.php b/tests/Feature/ValidationTest.php index a8e4714..09670d0 100644 --- a/tests/Feature/ValidationTest.php +++ b/tests/Feature/ValidationTest.php @@ -45,7 +45,6 @@ class ValidationTest extends TestCase public function test_validation_errors_shown_in_blade() { - // Post without name and description should fail $response = $this->followingRedirects()->post('projects'); $response->assertStatus(200); $response->assertSee('The name field is required.'); @@ -54,7 +53,6 @@ class ValidationTest extends TestCase public function test_validation_specific_error_shown_in_blade() { - // Post without name should fail $response = $this->followingRedirects()->post('products'); $response->assertStatus(200); $response->assertSee('The name field is required.'); @@ -62,7 +60,6 @@ class ValidationTest extends TestCase public function test_old_value_stays_in_form_after_validation_error() { - // Post without name should fail $response = $this->followingRedirects()->post('teams', ['name' => 'Abc']); $response->assertStatus(200); $response->assertSee('Abc'); @@ -99,4 +96,12 @@ class ValidationTest extends TestCase $this->assertNotNull($user); $this->assertEquals(false, $user->is_admin); } + + public function test_custom_error_message() + { + $response = $this->followingRedirects()->post('buildings'); + $response->assertStatus(200); + $response->assertSee('Please enter the name'); + } + }