mirror of
https://github.com/10h30/Test-Laravel-Validation.git
synced 2026-06-05 15:07:56 +09:00
Task 8 - customize validation messages
This commit is contained in:
@@ -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()`.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Requests\StoreBuildingRequest;
|
||||
use App\Models\Building;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class BuildingController extends Controller
|
||||
{
|
||||
public function create()
|
||||
{
|
||||
return view('buildings.create');
|
||||
}
|
||||
|
||||
// TASK: Customize the validation error message to say "Please enter the name"
|
||||
public function store(StoreBuildingRequest $request)
|
||||
{
|
||||
Building::create($validator->validated());
|
||||
|
||||
return 'Success';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
// TASK: Customize the validation error message to say "Please enter the name"
|
||||
class StoreBuildingRequest extends FormRequest
|
||||
{
|
||||
protected $redirectRoute = 'buildings.create';
|
||||
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'name' => 'required'
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Building extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $fillable = ['name'];
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreateBuildingsTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('buildings', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('name');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('buildings');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
<form method="POST" action="{{ route('buildings.store') }}">
|
||||
@csrf
|
||||
Name:
|
||||
<br />
|
||||
<input type="text" name="name" />
|
||||
<br />
|
||||
{{-- TASK: Customize the validation error message to say "Please enter the name" --}}
|
||||
@error('name') {{ $message }} @enderror
|
||||
<br /><br />
|
||||
<button type="submit">Save</button>
|
||||
</form>
|
||||
@@ -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');
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user