الدورات

title


استخدام Validation للتحقق من صحة البيانات وFlash Messages في لارافيل

استخدام Validation للتحقق من صحة البيانات وFlash Messages في لارافيل

استخدام Validation للتحقق من صحة البيانات وFlash Messages في لارافيل

تُعد التحقق من صحة البيانات (Validation) والرسائل المؤقتة (Flash Messages) من أهم الأدوات في لارافيل التي تساعد على بناء تطبيقات ويب احترافية وآمنة.

التحقق من البيانات يمنع إدخال معلومات غير صحيحة، بينما تساعد الرسائل المؤقتة على عرض نتائج العملية للمستخدم مثل "تم الحفظ بنجاح" أو "حدث خطأ أثناء الإرسال".

في هذا الدرس، سنتناول الموضوعين معًا خطوة بخطوة وبأمثلة عملية.


أولاً: ما هو التحقق من صحة البيانات (Validation)؟

التحقق من صحة البيانات يعني التأكد من أن القيم المرسلة من المستخدم تتوافق مع معايير معينة قبل تخزينها أو معالجتها.

لارافيل تُوفر نظام تحقق قوي وسهل الاستخدام يمكن تطبيقه داخل Controllers أو Form Requests.

ثانياً: مثال بسيط على التحقق داخل Controller

لنأخذ مثالاً على نموذج تسجيل مستخدم يحتوي على الاسم والبريد الإلكتروني وكلمة المرور.

1. تعريف Route:

use App\Http\Controllers\UserController;

Route::get('/register', [UserController::class, 'showForm'])->name('register.form');
Route::post('/register', [UserController::class, 'submit'])->name('register.submit');

2. إنشاء Controller:

php artisan make:controller UserController

ثم نضيف الكود التالي داخله:

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    public function showForm()
    {
        return view('register');
    }

    public function submit(Request $request)
    {
        // التحقق من صحة البيانات
        $request->validate([
            'name' => 'required|min:3',
            'email' => 'required|email|unique:users,email',
            'password' => 'required|min:6|confirmed'
        ]);

        // في حال نجاح التحقق يمكن تنفيذ أي عملية (مثل حفظ المستخدم)
        // User::create($request->all());

        return back()->with('success', 'تم التسجيل بنجاح!');
    }
}

ثالثاً: شرح قواعد التحقق (Validation Rules)

  • required: الحقل مطلوب.
  • min: الحد الأدنى لعدد الأحرف.
  • email: يجب أن يكون بريد إلكتروني صالح.
  • unique: يجب أن تكون القيمة غير مكررة في قاعدة البيانات.
  • confirmed: يتطلب وجود حقل إضافي باسم password_confirmation للتأكد من تطابق كلمة المرور.

رابعاً: عرض الأخطاء في واجهة المستخدم (Blade)

في ملف resources/views/register.blade.php نضيف الكود التالي:

<!DOCTYPE html>
<html lang="ar">
<head>
    <meta charset="UTF-8">
    <title>نموذج التسجيل</title>
</head>
<body>

<h2>نموذج التسجيل</h2>

{{-- عرض رسالة النجاح --}}
@if(session('success'))
    <p style="color: green;">{{ session('success') }}</p>
@endif

{{-- عرض الأخطاء --}}
@if ($errors->any())
    <div>
        <ul>
            @foreach ($errors->all() as $error)
                <li style="color: red;">{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

<form action="{{ route('register.submit') }}" method="POST">
    @csrf

    <label>الاسم:</label><br>
    <input type="text" name="name" value="{{ old('name') }}"><br>

    <label>البريد الإلكتروني:</label><br>
    <input type="email" name="email" value="{{ old('email') }}"><br>

    <label>كلمة المرور:</label><br>
    <input type="password" name="password"><br>

    <label>تأكيد كلمة المرور:</label><br>
    <input type="password" name="password_confirmation"><br><br>

    <button type="submit">تسجيل</button>
</form>

</body>
</html>

خامساً: إنشاء Flash Messages (الرسائل المؤقتة)

الرسائل المؤقتة تُستخدم لإبلاغ المستخدم بنتيجة العملية بعد الانتقال إلى صفحة جديدة.

لارافيل توفر طريقة سهلة جداً باستخدام with().

1. في الـController:

return back()->with('success', 'تم حفظ البيانات بنجاح!');

أو لرسالة خطأ:

return back()->with('error', 'حدث خطأ أثناء حفظ البيانات!');

2. في الـView:

@if (session('success'))
    <div style="color: green;">{{ session('success') }}</div>
@endif

@if (session('error'))
    <div style="color: red;">{{ session('error') }}</div>
@endif
ملاحظة: الرسائل المؤقتة تبقى فقط لجلسة واحدة (Session واحدة)، أي أنها تُعرض مرة واحدة فقط بعد التحميل.

سادساً: التحقق المتقدم باستخدام Form Request

بدلاً من كتابة التحقق داخل الـController، يمكننا إنشاء كلاس Request مخصص لتنظيم الكود.

إنشاء Request جديد:

php artisan make:request UserRequest

ثم تعديل الملف:

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class UserRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'name' => 'required|min:3',
            'email' => 'required|email|unique:users,email',
            'password' => 'required|min:6|confirmed'
        ];
    }

    public function messages()
    {
        return [
            'name.required' => 'الاسم مطلوب.',
            'email.email' => 'يرجى إدخال بريد إلكتروني صالح.',
            'password.confirmed' => 'كلمتا المرور غير متطابقتان.'
        ];
    }
}

ثم نستخدمه في الـController:

use App\Http\Requests\UserRequest;

public function submit(UserRequest $request)
{
    // التحقق يتم تلقائياً
    return back()->with('success', 'تم التسجيل بنجاح!');
}

سابعاً: Flash Messages مع إعادة التوجيه (Redirect)

يمكنك استخدام الرسائل مع إعادة التوجيه إلى صفحة أخرى:

return redirect()->route('dashboard')->with('success', 'تم تسجيل الدخول بنجاح!');

ثم في صفحة dashboard.blade.php:

@if(session('success'))
    <p style="color: green;">{{ session('success') }}</p>
@endif

خلاصة

  • Validation يمنع البيانات غير الصحيحة من الوصول إلى قاعدة البيانات.
  • يمكن كتابة التحقق داخل الـController أو داخل Form Request مخصص.
  • Flash Messages تُستخدم لإظهار رسائل النجاح أو الخطأ للمستخدم بعد أي عملية.
  • توفر لارافيل طرقاً بسيطة وآمنة للتعامل مع كل من التحقق والرسائل المؤقتة بطريقة احترافية.

سجل بالدورة الأفضل والأشهر في مجال الويب