I'm always excited to take on new projects and collaborate with innovative minds.

Phone

+20 115 052 9992

Website

https://ibrahimahmed.online/

Social Links

أسرار الـ Custom Validation Rules في لارايفل (Laravel) لتنظيف الكود

التصنيف: Web Development, Tutorials أسرار الـ Custom Validation Rules في لارايفل (Laravel) لتنظيف الكود يا هلا بيك يا بشمهندس! تعال نتكلم شوية عن كابوس كل مبرمج

أسرار الـ Custom Validation Rules في لارايفل (Laravel) لتنظيف الكود
Reading Count: 3

التصنيف: Web Development, Tutorials

أسرار الـ Custom Validation Rules في لارايفل (Laravel) لتنظيف الكود

يا هلا بيك يا بشمهندس! تعال نتكلم شوية عن كابوس كل مبرمج ويب بيشتغل بلارايفل (Laravel): الـ Controllers الزحمة. قد تلاقي نفسك كاتب كود Validation طويل عريض جوه الـ Controller، شروط معقدة، وأحياناً بتضطر تكرر نفس اللوجيك ده في أكتر من مكان. النتيجة؟ كود صعب تقراه، وصعب تعمل له صيانة، وكل ما تحب تعدل شرط، تلف على المشروع كله. طيب إيه الحل؟ الحل السحري هنا هو استخدام قواعد التحقق المخصصة أو الـ Custom Validation Rules.

إيه هي الـ Custom Validation Rules وليه محتاجها؟

لارايفل (Laravel) بتوفر لنا مجموعة ضخمة من قواعد التحقق الجاهزة زي required و email و min، ودي حاجات عظيمة وبتغطي 80% من الشغل. بس المشكلة بتظهر لما البزنس لوجيك (Business Logic) بتاع التطبيق بتاعك يبقى معقد شوية. مثلاً: عايز تتأكد إن الكود اللي اليوزر مدخله مش بس مسجل في الداتا بيس، لأ، ده كمان صالح للاستخدام ومنتمي لفرع معين، أو عايز تفحص حاجة معينة في الـ API الخارجي.

بدل ما تحط اللوجيك ده كله جوه الـ Controller وتعمل زحمة، لارايفل (Laravel) بتديك طريقتين عبقريتين عشان تعمل Custom Validation Rules وتخلي الكود بتاعك نظيف ومقروء (Clean Code):

  • الـ Closures (للحاجات السريعة والبسيطة).
  • الـ Rule Objects (للبزنس المعقد والمتكرر).

الطريقة الأولى: الـ Closures السريعة على السريع

لو عندك قاعدة بسيطة ومش هتكررها كتير في أماكن مختلفة، مش محتاج تعمل ملف جديد. تقدر تستخدم الـ Closure مباشرة جوه الـ Request أو الـ Controller بالشكل ده:


$request->validate([
    'username' => [
        'required',
        'string',
        function ($attribute, $value, $fail) {
            if ($value === 'admin_root') {
                $fail('الاسم ده ممنوع استخدامه يا بشمهندس!');
            }
        },
    ],
]);

الطريقة دي ممتازة وسريعة جداً للحاجات اللي مش هتحتاج تعيد استخدامها (Reusable)، لكن لو اللوجيك ده هتحتاجه في الـ Register والـ Profile والـ Admin Panel، يبقى لازم ندخل على السلاح الأقوى.

الطريقة الثانية: الـ Rule Objects (الاحتراف بجد)

لما البزنس يكبر، الـ Rule Objects هي منقذك الحقيقي. تقدر تنشئ रूल (Rule) جديدة باستخدام الارتيزان (Artisan Command) البسيطة دي:


php artisan make:rule Uppercase

الأمر ده هيعمل لك ملف جديد جوه فولفر app/Rules. تعال نشوف جوه الملف ده بيكون شكل الكود عامل إزاي وكيف بنكتب اللوجيك جواه:


namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class Uppercase implements Rule
{
    public function passes($attribute, $value)
    >   {
        return strtoupper($value) === $value;
    }

    public function message()
    {
        return 'الحقل :attribute لازم يكون حروف كابيتال بس (Uppercase).';
    }
}

جميل جداً! دلوقتي تقدر تستخدم القاعدة دي في أي مكان بكل سهولة ونظافة:


use App\Rules\Uppercase;

$request->validate([
    'promo_code' => ['required', new Uppercase()],
]);

شايف الكود بقى نظيف ومرتب إزاي؟ الـ Controller مش شايل هم تفاصيل الفحص خالص، هو بس بينادي على القاعدة.

نصيحة أخيرة من أخوك لتطوير مهاراتك

الكود النظيف (Clean Code) مش مظهر جمالي وبس، ده استثمار في وقتك ووقت الفريق معاك. لما تتعود تفصل البزنس لوجيك جوه Custom Rules أو Form Requests، هتلاقي مشاريع لارايفل (Laravel) بتاعتك بقت أسرع في التطوير، وأسهل بكتير في كتابة الـ Unit Tests. متستخسرش ثواني وأنت بتكتب الكود عشان تنظمه، لأنك هترجع تشكر نفسك بعدين.


Share

Related posts

Aug 13, 2026 • 1 min read
Reading Count: 5
مقارنة حاسمة: Livewire أم Inertia.js؟ أيهما تختار لمشروعك القادم

يا هلا بيك يا صديقي المبرمج! لو انت شغّال بتطوير مواقع الويب (Web Development) بلارافيل (Laravel)، ف...

Aug 13, 2026 • 1 min read
Reading Count: 2
دليل بناء لوحات التحكم في ساعات باستخدام Filament PHP

يا هلا بيك يا صديقي المبرمج في عالم تطوير الويب (Web Development). تعال نتكلم كلمتين على بلاطة؛ كم م...

Aug 13, 2026 • 1 min read
Reading Count: 6
بناء وتصميم الـ Pagination للبيانات التي تتحدث باستمرار (Real-time Pagination)

يا هلا بيك يا سيدي، لو انت شغال مبرمج ويب (Web Developer) وبتعمل داشبورد (Dashboard) أو تطبيق فيه جد...