كيفية استخدام قواعد الـ Validation المدمجة في Laravel
المقدمة
يعتبر التحقق من المدخلات (Validation) جزءًا أساسيًا من تطوير تطبيقات الويب لضمان سلامة وأمن البيانات المدخلة. يوفر Laravel نظام تحقق قوي وسهل الاستخدام مع مجموعة من قواعد التحقق المدمجة التي تغطي معظم الاحتياجات الشائعة. من خلال استخدام هذه القواعد، يمكنك التحقق من صحة بيانات النماذج المدخلة قبل حفظها في قاعدة البيانات أو معالجتها بشكل آخر.
الخطوة 1: إعداد التحقق من المدخلات في المتحكم (Controller)
لتطبيق التحقق من المدخلات في Laravel، يمكنك استخدام دالة validate()
في المتحكم. لنقم بإنشاء متحكم جديد واستخدامه للتحقق من بيانات النموذج:
php artisan make:controller UserController
بعد إنشاء المتحكم، افتح ملف UserController.php
في مجلد app/Http/Controllers
وأضف منطق التحقق:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function store(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:8|confirmed',
]);
// حفظ البيانات في قاعدة البيانات أو معالجة أخرى
// ...
return redirect()->back()->with('success', 'تم التسجيل بنجاح!');
}
}
في هذا المثال، نتحقق من أن حقل name
مطلوب وهو نصي ولا يزيد عن 255 حرفًا، وحقل email
يجب أن يكون عنوان بريد إلكتروني صالحًا وفريدًا في جدول المستخدمين، بينما يجب أن يحتوي حقل password
على 8 أحرف على الأقل ويكون متطابقًا مع حقل تأكيد كلمة المرور.
الخطوة 2: عرض رسائل الخطأ في قوالب Blade
لإظهار رسائل الخطأ في قوالب Blade، يمكنك استخدام الكتلة @error
للتحقق مما إذا كان هناك خطأ مرتبط بحقل معين:
<!-- resources/views/user/create.blade.php -->
<form action="{{ route('user.store') }}" method="POST">
@csrf
<div>
<label for="name">الاسم:</label>
<input type="text" name="name" id="name" value="{{ old('name') }}">
@error('name')
<div style="color: red;">{{ $message }}</div>
@enderror
</div>
<div>
<label for="email">البريد الإلكتروني:</label>
<input type="email" name="email" id="email" value="{{ old('email') }}">
@error('email')
<div style="color: red;">{{ $message }}</div>
@enderror
</div>
<div>
<label for="password">كلمة المرور:</label>
<input type="password" name="password" id="password">
@error('password')
<div style="color: red;">{{ $message }}</div>
@enderror
</div>
<div>
<label for="password_confirmation">تأكيد كلمة المرور:</label>
<input type="password" name="password_confirmation" id="password_confirmation">
</div>
<button type="submit">تسجيل</button>
</form>
يتم استخدام الكتلة @error
لعرض رسالة الخطأ المرتبطة بكل حقل. سيظهر الخطأ فقط إذا كان هناك مشكلة في التحقق من المدخلات.
الخطوة 3: تخصيص رسائل الخطأ
يمكنك تخصيص رسائل الخطأ الافتراضية لتكون أكثر وضوحًا وملائمة لتطبيقك. لإضافة رسائل خطأ مخصصة، يمكنك تمرير مصفوفة ثانية إلى دالة validate()
تحتوي على الرسائل المخصصة:
$validatedData = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:8|confirmed',
], [
'name.required' => 'يرجى إدخال اسمك.',
'email.required' => 'يرجى إدخال عنوان بريد إلكتروني صالح.',
'email.unique' => 'البريد الإلكتروني مسجل بالفعل.',
'password.required' => 'يرجى إدخال كلمة المرور.',
'password.min' => 'يجب أن تكون كلمة المرور مكونة من 8 أحرف على الأقل.',
'password.confirmed' => 'تأكيد كلمة المرور غير مطابق.',
]);
سيتم عرض الرسائل المخصصة بدلاً من الرسائل الافتراضية عندما تكون هناك أخطاء في التحقق.
الخطوة 4: استخدام كائن طلب مخصص للتحقق
لجعل التحقق أكثر تنظيماً، يمكنك استخدام كائن طلب مخصص للتحقق من المدخلات. لنقم بإنشاء طلب مخصص باستخدام الأمر make:request
:
php artisan make:request StoreUserRequest
سيتم إنشاء ملف StoreUserRequest.php
في مجلد app/Http/Requests
. افتح الملف وقم بتعريف قواعد التحقق:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreUserRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:8|confirmed',
];
}
public function messages()
{
return [
'name.required' => 'يرجى إدخال اسمك.',
'email.required' => 'يرجى إدخال عنوان بريد إلكتروني صالح.',
'email.unique' => 'البريد الإلكتروني مسجل بالفعل.',
'password.required' => 'يرجى إدخال كلمة المرور.',
'password.min' => 'يجب أن تكون كلمة المرور مكونة من 8 أحرف على الأقل.',
'password.confirmed' => 'تأكيد كلمة المرور غير مطابق.',
];
}
}
بعد ذلك، استخدم كائن الطلب المخصص في المتحكم بدلاً من كائن Request
الافتراضي:
use App\Http\Requests\StoreUserRequest;
public function store(StoreUserRequest $request)
{
// البيانات الممررة متحققة وصحيحة هنا
// منطق الحفظ أو المعالجة
}
باستخدام كائن الطلب المخصص، يمكنك تنظيم التحقق من المدخلات بشكل أفضل وجعل المتحكمات أكثر نظافة وقابلية للصيانة.
الخاتمة
يعد نظام التحقق في Laravel أداة قوية لضمان صحة وأمان البيانات المدخلة في تطبيقات الويب. باستخدام قواعد التحقق المدمجة، يمكنك بسهولة التحقق من المدخلات وعرض رسائل الخطأ المناسبة للمستخدمين. استمر في استكشاف ميزات Laravel لتحسين تطبيقاتك وتحسين أدائها.
اترك تعليقاً