كيفية استخدام قواعد الـ Validation المدمجة في Laravel

Amine
30/08/2024

المقدمة

يعتبر التحقق من المدخلات (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 لتحسين تطبيقاتك وتحسين أدائها.

التعليقات

اترك تعليقاً