165 Matching Annotations
  1. Oct 2025
    1. php artisan config:cache php artisan config:cache

      يجمع جميع ملفات config/*.php في ملف واحد اسمو bootstrap/cache/config.php

    2. php artisan optimize:clear php artisan optimize:clear

      يمسح جميع ملفات الكاش php artisan config:clear php artisan route:clear php artisan event:clear php artisan view:clear

    1. vendor

      يحتوي على جميع dependencies التي يثبتها composer

      مثلا ثبتت livewire سوف يتم وضع الكود المصدري في Vendor

    2. storage

      يحتوي على جيمع logs وملفات الكاش

      app -> اي ملفات ينشآها المشروع مثلا images framework -> كاش لارافيل نفسه logs -> سجلات التطبيق مثل الاخطاء او الاشعارات المعلومات

    3. assets

      يحتوي على كل assets - html - css - js - images - svg - icon في المشاريع الحديثة vite يضع المخرجات داخل public/build ويستدعيها من خلال @vite()

    4. public

      يحتوي على جذر المشروع الذي يستقبل كل الطلبات يستدعي Composer autoload يجب ان يكون index.php داخل public ممنوع يكون index.php داخل root directory لكي لا يتمكن احد من الوصول الي ملف .env

    5. bootstrap

      المرحلة التي ينشآ فيها laravel المشروع ويحتوي علي كل ملفات cache من خلال php artisan config:cache php artisan route:cache php artisan event:cache

    1. php artisan down --secret="1630542a-246b-4b66-afa1-dd72a4c43515" php artisan down --secret="1630542a-246b-4b66-afa1-dd72a4c43515"

      اذا وضعت هاظ key بعد رابط الدومين بقدر اتخطى الصيانة وادخل على الموقع بسهولة

    2. php artisan down --refresh=15 php artisan down --refresh=15

      يطلب من المتصفح اعادة التحميل تلقائي كل ١٥ ثانية

    3. $value = Config::get('app.timezone');4

      انا عندي Directory Config هاظ المجلد داخلو جميع ملفات Config اذا بدي استدعي اي متغير من داخلهم بقدر استخدم Config::get('app.timezone')

    4. php artisan env:decrypt php artisan env:decrypt

      فك تشفير ملف .env يجب وضع key الذي تم انشائه اثناء عملية التشفير مهم اذا بدي ارفع ملف .env على github مثلا

  2. Sep 2025
    1. throttle

      debounce: يرسل الطلب بعد ما المستخدم يوقف كتابة لمدة X ms. إذا ظل يكتب، ما في طلب.

      throttle: يرسل الطلب كحد أقصى مرّة كل X ms حتى لو المستخدم مستمر بالكتابة.

      تستخدم throttle لما بدك تحديثات دورية أثناء الكتابة (مثلاً: حفظ تلقائي مستمر، معاينة فورية، بحث لحظي مع تتبّع).

    2. wire:dirty.class="border-yellow"

      في حال كان القيمة في الحقل غير القيمة في قاعدة البيانات بنفذ الستايل

    3. public function updated($name, $value)

      هاظ hook بستمع للواجهة ولما يتغير اي حقل برجع اسم الحقل و القيمة الجديدة وبنفذ الفنقشن بنفس الحظة التي تتغير فيها القيمة مباشرة

    4. blur

      ما يرسل Livewire أي تحديث للسيرفر إلا لما الحقل يفقد التركيز (blur) — يعني المستخدم ضغط Tab، أو نقر خارج الحقل. هذا يقلّل عدد الطلبات مقارنةً بـ .live أثناء الكتابة.

    1. $this->authorize('delete', $post);

      اهم اشي authorize عشان ما يقدر اي مخترق انو يحدف من الموقع لانو ممكن بسهولة يحذف اي منشور لانو قيم public بقدر استدعيها بسهولة بالمتصفح

    2. $this->skipRender();

      بمنع اعادة بناء الواجهة بشكل غير ثابت يعني ممكن حسب شرط معين ابني الواجهة او ما ابنيها

    3. $event.target.value

      في تطبيقات الويب، عندما تحدث أي تفاعل (مثل النقر، الضغط على زر، إدخال نص)، يقوم المتصفح بإنشاء كائن حدث (Event Object). هذا الكائن يحتوي على جميع المعلومات المتعلقة بالحدث، مثل:

      نوع الحدث: هل هو نقرة، ضغط على زر، إرسال نموذج؟

      العنصر المُشغّل (target): ما هو العنصر الذي تسبب في الحدث؟ (مثال: زر، حقل إدخال، رابط)

      معلومات إضافية: مثل مفتاح لوحة المفاتيح الذي تم الضغط عليه، إحداثيات الماوس، إلخ.

      Livewire يسمح لك بالوصول إلى هذا الكائن مباشرةً باستخدام المتغير $event.

    4. $toggle('sortAsc')

      بقدر بسهولة اغير قيمة اي متغير bool وتسمع في الواجهة بشكل مباشر بدون اي كود اضافة فقط اعرف المتغير

    5. $wire.$js.bookmark()

      بهذه الطريقة نستطيع استدعاء function التي عرفناها في js - في داخل alpine $wire.$js.bookmark()

    6. When you want to optimistically update the UI with JavaScript before making a server request

      تفاؤل: تعدّل الواجهة فورًا، ثم ترسل طلب للسيرفر لتثبيت الحالة.

    7. When you want to perform simple UI updates that don't require server communication

      تحديثات واجهة خفيفة محليًا (بدون شبكة).

    8. public function delete(Post $post)

      بدل ما تستقبل ID وتعمل findOrFail، تقدر تخلي Livewire يجيب الموديل تلقائيًا إذا نوّهت النوع (type-hint):

    9. x-on:trix-change="$wire.content = $event.target.value"

      منقدر نسحب قيمة الحقل من خلال alpine من خلال $event.target.value $event الحدث target العنصر الي احنا في value القيمة الي داخلو وحسب الevent الي مستخدمينو منحدد متى مثلا نسحب القيمة او نعدلها

    10. ny parameters you pass to the $wire method will also be passed to the PHP class method. For example, consider the following Livewire action:

      نستطيع تمرير القيم للسيرفر من خلال alpine بكل سهوله مثل المثال المرفق

    11. PHP

      لما تنادي $wire.someMethod() من Alpine، Livewire يرسل طلب شبكة للسيرفر ويشغّل ميثود PHP المقابل، ثم يعيد رندر المكوّن.

    12. window

      اذا كان العنصر ليس داخل عنصر livewire ببساطة بضيف window عشان يستمع للحدث في كل الصفحة

    13. When the $refresh action is triggered, Livewire will make a server-roundtrip and re-render your component without calling any methods.

      بتعي بناء الواجهة

    14. refresh

      أي تغييرات محليّة (مثل wire:model المؤجَّلة) تُطبّق على السيرفر أولًا ثم يُعاد الرندر.

      لن يُستدعى mount() مرة أخرى. لكنه سيعيد تنفيذ ما في render() وأي خواص محسوبة/استعلامات داخلها.

      لا يجري validate() ولا أي منطق إضافي إلا إذا كتبته أنت.

    1. Properties defined in an x-data directive are available to all element children. Even ones inside other, nested x-data components.

      جميع البيانات يتم توريثها للابناء

    1. <button x-on:click="$wire.todo = ''">Clear</button>

      هذا يغيّر القيمة في المتصفح فقط (state المحليّة).

      لا يرسل طلب للسيرفر الآن.

      عند أول جولة لاحقة (أي اكشن Livewire أو submit…)، Livewire يزامن القيمة الجديدة مع السيرفر.

      المفيد: تفاعل لحظي بدون شبكة.

    2. Todo character length: <h2 x-text="$wire.todo.length"></h2>

      الحقل مربوط بـ wire:model="todo"، فـ Livewire يبقي قيمة todo محدثة محليًا في المتصفح.

      عندما تكتب، تتغيّر $wire.todo فورًا في المتصفح؛ لذلك x-text="$wire.todo.length" تظهر الطول مباشرة بدون أي request.

    3. Livewire exposes a magic $wire object to Alpine. You can access the $wire object from any Alpine expression inside your Livewire component.

      داخل أي مكوّن Livewire، عندك كائن سحري اسمه $wire متاح في Alpine.

      $wire هو “نسخة جافاسكربت” من المكوّن: فيه نفس الخصائص والميثودز، لكن القراءة منه لا تُرسل طلبًا للسيرفر.

    4. Array, String, Integer, Float, Boolean, and Null.

      اول اشي livewire بحول القيم الي json قبل ارسالها في request وبعد وصولها الي class يحولها الي قيم صريحة التي حددناها و هذه القيم محدودة لان json لا يستطيع حمل كل انواع البيانات

    5. $this->todos[] = $this->pull('todo');

      بهاي الدالة يمكننا اخذ القيمة و بعد اخدها حذفها ونمرر لها نص باسم المتغير الذي نريد قيمته و يتعرف livewire تلقائي علييه وجب ان يكون معرف و public

    6. wire:model

      نقوم باضافة هذه التاق علي field الذي سوف يحتوي علي البيانات وسوف يقوم بنقل البيانات عند حدوث عملية submit or save وتنتقل البيانات الي الميثود المربوطة به

    1. Setting additional layout file slots

      اذا مثلا بدي اعمل @yield('style') بستخدم هاي الطريقة اول اشي لازم اني اعرف في layout ->. {{$style ?? ''}} بعدها لازم اني اروح علي component واضيف

      <x-slot:syle>css<x-slost/>

    2. #[Layout]

      اذا بدي component معينة اعرضها في layout مختلف بضيف هاي فوق render

      استخدم Attribute لما يكون الياوت ثابت وما تحتاج تمرير بيانات متغيّرة

    3. mount()

      أي قيمة تمرّرها في وسم المكوّن تُحقن في mount() كـ بارامترات: يعني البيانات بتنتقل نم باراميتر من ثم الي mount من ثم بتقدر تضيف عليها اي تعديلات ثم بتتخزن داخل public value

    4. There are two ways to render a Livewire component on a page:

      يمكن استدعاء component بطريقتين ١-من خلال استدعائها داخل صفحة ٢-من خلال جعلها صفحة كامل

    5. public function save()

      يتم تشغيل هاي الفنقشن ك event مثلا في الفورم wire:submit="save" في هاي الحالة يتم تشغيل الفنقشن save

    6. "Why isn't my component live updating as I type?" .prose .lw-tip pre:last-child { margin-bottom: 0px; }

      إذا كتبت في الحقل وما شفت القيمة تتحدّث فورًا في الواجهة، هذا طبيعي في Livewire (v4).

      Livewire صار يحدّث المكوّن فقط عند حدوث “Action” (زي ضغط زر submit أو wire:click) — مش مع كل ضغطة زر أثناء الكتابة.

      الهدف: تقليل عدد الطلبات للسيرفر وتحسين الأداء.

      لو بدك تحديث لحظي وأنت بتكتب، استخدم wire:model.live بدل wire:model.

    7. Binding inputs to properties

      تربط الحقل بالخاصية $title لكن في v4 لا يُرسل التحديث للسيرفر أثناء الكتابة.

      Livewire يؤجّل الإرسال لغاية ما يصير Action (زي wire:click, submit …). هذا لتقليل الطلبات وتحسين الأداء.

    8. wire:model="title"

      تربط الحقل بالخاصية $title لكن في v4 لا يُرسل التحديث للسيرفر أثناء الكتابة.

      Livewire يؤجّل الإرسال لغاية ما يصير Action (زي wire:click, submit …). هذا لتقليل الطلبات وتحسين الأداء.

    9. :key="$post->id"

      هاي ضرورية لما بدك تعمل loop وداخلو بدك تدخل Component لازم تضيف هاي الخاصية عشان livewire تقدر تطابق البيانات مع بعض

    10. :$post

      اختصار ل 'post' => $post

      وهو تمرير بيانات ل كمبوننت يمكن استلام البيانات استلام البيانات اما من خلال mount($post) or public Post $post;

    11. Adding wire:key to @foreach loops

      مهمة جدا اي بيانات بدك تعمل عليها loop لازم توضعها داخل root وتعطي الخاصية wire:key='' ولازم يكون فريد عشان ال livewire يطابق العناصرمع بعض

    12. with()

      تستخدم لتمرير البيانات الي الواجهة لانو احيانا public مش مناسبة لجميع السيناريوهات لانها بتخضع ل حماية و تعامل مختلف فيمكنك استخدام with

    13. Livewire components have properties that store data and can be easily accessed within the component's class and Blade view. This section discusses the basics of adding a property to a component and using it in your application.

      يتكم الجزء اني بقدر اعمل متغيرات داخل Class تكون public واستدعيها في blade مثل ما يوضح في الصورة

    14. Customizing component stubs

      لما تعمل صفحة جديدة بكون في ملفات افتراضية يتم انشائها اذا بدي اخصص الملف اول ما اعملو شو يكون داخلو بنفذ الكوماند المرفق وبعدل ببساطة الملفات الافتراضية لانشاء الملفات

    15. Omitting the render method

      اذا حذفت render function تلقائيا livewire رح تبحث علي اول view يتطابق اسمه مع اسم Control وتبعثو للواجهة

    16. php artisan make:livewire CreatePost --inline

      لما تعمل Component بضمن html داخل نفس Class يعني بنشاء ملف واحد في App/Livewire وما بعمل ملف داخل view

    17. ->layout()

      نستطيع من خلالها تحديد اي layout نريد تمرير البيانات له

      return view('livewire.posts.index') ->layout('components.layouts.app', ['title' => 'Latest Posts']); // تمُرِّر بيانات للّياوت أيضًا

    18. php artisan make:livewire CreatePost

      كوماند مخصص لانشاء Component ينتج عن تنفيد هذا الكوماند ملفين

      CLASS: app/Livewire/Counter.php المنطق VIEW: resources/views/livewire/counter.blade.php الواجهة

    1. wire:navigate

      **يمنع اعادة التحميل الكاملة للصفحة يجلب الصفحة من خلال ajax بيبدل المحتوى القديم بالجديد بشكل يشبه Single Page Application **