اذهب إلى المحتوى

Hassan Hedr

الأعضاء
  • المساهمات

    2846
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    38

إجابات الأسئلة

  1. إجابة Hassan Hedr سؤال في كيف يمكنني إضافة التجاوبية لموقعي؟ كانت الإجابة المقبولة   
    يمكن إضافة التجاوبية إلى العناصر بعدة طرق، أهمها وأساسها كتابة تنسيقات CSS ضمن استعلامات الوسائط فمثلًا لتعديل تنسيق العناصر على الشاشات الصغيرة نكتب التنسيقات ضمن الاستعلام التالي في ملفات CSS:
    @media screen and (max-width: 720px) { /* تنسيقات إضافية للشاشات الصغيرة */ } يمكنك الاستفادة من قراءة المقال التالي:
    في حال كنت تستعمل أحد مكتبات التنسيقات ضمن المشروع يمكنك الاستفادة من نظام الأعمدة في حال كان متوفرًا ضمنها مثلا في بوتستراب يمكنك استخدام مخطط الأعمدة لتنسيق العناصر ضمن أعمدة متجاوبة، يمكنك الاستفادة من قراءة المقال التالي:
     
     
  2. إجابة Hassan Hedr سؤال في كيفية تحويل مصفوفة من النصوص strings إلى مصفوفة من الأرقام في PHP؟ كانت الإجابة المقبولة   
    يمكن الاستفادة من استخدام التابع intval لتحويل النص إلى قيمته العددية مثال:
    echo intval("5"); // 5 يمكنك المرور على عناصر المصفوفة وتحويلها باستخدام هذا التابع 
    $numbers = []; foreach ($age as $all_ages) { $numbers[] = intval($each_number); } أو اختصارا يمكن الاستفادة من التابع array_map لتحويل عناصر تلك المصفوفة كالتالي:
    $all_ages = array_map('intval', explode(',', $ages));  
  3. إجابة Hassan Hedr سؤال في هل تتوفر شهادة أكاديمية حسوب باللغة الإسبانية؟ كانت الإجابة المقبولة   
    حاليًا يتوفر يتوفر شهادة واحدة فقط يمكن الرجوع اليها برابط مباشر على موقع الأكاديمية، ومحتواها يكون باللغتين العربية والانكليزية فقط،
    يمكنك التواصل مع مركز المساعدة في حال كنت مضطرًا على ذلك وطرح استفسارك

  4. إجابة Hassan Hedr سؤال في كيفية عمل متغير في قالب Blade في لارافيل Laravel؟ كانت الإجابة المقبولة   
    قالب Blade هو ملف PHP عادي أي يمكنك ضمنه الكتابة بلغة php ضمن وسم اللغة التالي:
    <?php /* PHP لغة */ ?> لتعريف المتغير var$ يمكنك ضمن الملف كتابة التعليمة كالتالي:
    <?php $var = "value"; ?> يمتلك Blade وسوم Directives كثيرة تسهل عملية كتابة تعليمات PHP ضمن ملفات القوالب، ومنها وسم php@ يماثل في عمله وسوم لغة PHP ويمكنك كتابة نفس عملية التعريف السابقة داخله كالتالي:
    @php $var = "value"; @endphp  
  5. إجابة Hassan Hedr سؤال في كيفية تمرير مصفوفة Array من لارافيل Laravel إلى JavaScript؟ كانت الإجابة المقبولة   
    يمكنك استخدام مكونات لارافل لتحقيق ذلك بطريقتين:
    استخدام json@ ضمن ملف عرض blade كالتالي: var arr = @json($arr);  
    أو استخدام Illuminate\Support\Js لتحقيق ذلك ويضمن هذا التابع تحويل المحارف ضمن المتغير لتناسب صفحات HTML كالتالي:  var arr = {{ Illuminate\Support\Js::from($arr) }};  
  6. إجابة Hassan Hedr سؤال في كيفية الحصول على id الخاص بكائن تمت إضافته للتو في لارافيل Laravel؟ كانت الإجابة المقبولة   
    يمكنك الحصول على المعرف الخاص بالنموذج مباشرة بعد حفظه كالتالي:
    $product->save(); $product->id; // المعرّف أو في حال كان حقل المعرف الأساسي للجدول من نوع Auto Increment فيمكنك الحصول على آخر نموذج تمت إضافته عبر الاستعلام التالي:
    $product = Product::orderBy('id', 'desc')->first(); في هذه الحال يجب التأكد من أن نسخة واحدة من تطبيقك فقط تتعامل مع قاعدة البيانات، لتجنب إنشاء عنصر جديد من قبل نسخة أخرى قبل حصولك على جواب الاستعلام السابق فتحصل على جواب خاطئ
  7. إجابة Hassan Hedr سؤال في كيفية تعيين Cookies وإرجاع قيمتها في لارافيل Laravel؟ كانت الإجابة المقبولة   
    بما أنك تقوم بتعيين ال Cookie ضمن Queue ليتم تعيينها على الرد لاحقًا، يمكنك الحصول عليها باستدعاء التابع queued كالتالي:
    $cookie = Cookie::queued('cookie_name') يمكنك أيضًا تمرير قيمة افتراضية كمعامل ثانٍ في حال لم يتم العثور على ال Cookie المطلوبة  
    $cookie = Cookie::queued('cookie_name', 'قيمة افتراضية')  
  8. إجابة Hassan Hedr سؤال في كيفية تحميل ملف من خلال URL في لارافيل Laravel؟ كانت الإجابة المقبولة   
    يمكنك إرسال الملف باستخدام التابع streamDownload، حيث تمرر له تابع وتقوم داخل التابع بطباعة محتويات الملف بعد جلبه باستخدام file_get_contents كالتالي:
    return response()->streamDownload(function () { echo file_get_contents('https://www.example.com/image.png'); }, 'image.png');  
  9. إجابة Hassan Hedr سؤال في كيفية إظهار عنصر عند النقر على زر في جافاسكربت كانت الإجابة المقبولة   
    هناك خطأ لديك أنه عند إضافة الصنف active على الصورة يتم ذلك بشكل صحيح، لكنك لا تقوم بحذف ذلك الصنف من باقي الصور وهذا ضروري حيث أنك تريد لصورة واحدة فقط في كل مرة أن تمتلك الصنف active، يمكنك إضافة السطر التالي قبل عملية إضافة active لمسح هذا الصنف من جميع الصور كالتالي:
    // مسح الصنف من جميع الصور imgs.forEach(img => img.classList.remove('active')) // إضافة الصنف للصورة المستهدفة if (cercles[i].getAttribute("data-clic") === imgs[i].getAttribute("alt")) { imgs[i].classList.add("active"); }  
  10. إجابة Hassan Hedr سؤال في التوابع isClean wasChanged لاتعمل بشكل جيد في Laravel 7 كانت الإجابة المقبولة   
    تقريبًا wasChanged و isDirty تعملان بنفس الطريقة حيث تحددان فيما إذا تم تعديل خاصية ما ضمن النموذج أم لم يعدل شيء الفرق كالتالي:
    isDirty تعمل فقط قبل حفظ النموذج wasChanged تعمل حتى بعد حفظ النموذج حاول تعديل الشيفرة لديك إلى التالي بحسب الطريقة التي تريدها:
    $category->save(); // حفظ قبل if(!$category->wasChanged()){ ... أو كالتالي 
    if(!$category->isDirty()){ ... $category->save(); // حفظ بعد أو 
    if($category->isClean()){ ... $category->save(); // حفظ بعد  
  11. إجابة Hassan Hedr سؤال في خطأ في تنسيق عنصري div ليتم وضعهما بجانب بعضهما في CSS كانت الإجابة المقبولة   
    يمكن أيضًا استخدام طريقة float وسيتم تعويم العنصر على يسار العناصر التي تسبقه، في حال كان سؤالك عن لماذا لم ينفع تحديد عرض العنصر ب 50% لوضع العناصر بجانب بعضها فالسبب هو خاصية display وقيمتها الافتراضية ل div
  12. إجابة Hassan Hedr سؤال في هل يجب تعديل قيمة box-sizing في كل مشروع جديد أقوم ببناءه؟ كانت الإجابة المقبولة   
    يفضل التعامل مع القيمة الافتراضية لها وهي content-box أي أن عرض وارتفاع العنصر محدد بصندوق المحتوى فقط، الحواشي الداخلية Padding وعرض الإطار إن وجدو لا يتم احتسابهم من قياس العنصر نفسه،
    عند تعيينك للخاصية box-sizing بالقيمة border-box قد يكون لك غرض ما من ذلك، مثلًا في حال كنت تبني رسومات تحتاج فيها أن لا يؤثر قياس الحاشية أو الإطار الخارجي عليها، مثلًا تحديد عناصر بمكان معين بتلك الخاصية كالتالي:
    .graphics * { box-sizing: border-box; } يمكنك الاستفادة من قراءة المقال التالي:
     
  13. إجابة Hassan Hedr سؤال في أيهما أفضل flex-box أم float في CSS؟ كانت الإجابة المقبولة   
    يمكن تبديل كلمة أفضل بكلمة "أنسب" حيث أن لكل حالة وكل مشروع ما يناسبها بين الطريقتين، من ناحية البساطة float ليس فيه مزايا كبيرة ويناسب بعض الحالات الصغيرة ويتفرد بميزة تعويم العناصر لتداخل مع النصوص  ضمن الصفحة وهو أمر لا يمكن لنموذج flex-box اتمامه
    أما flex-box مناسب أكثر لتنسيق تموضع العناصر ومحاذاتها حيث يحتوي على الكثير من المزايا لتخصيص ذلك وتطبيقاته أكثر،
    يمكنك الاستفادة من قراءة المقالات التالية
     
  14. إجابة Hassan Hedr سؤال في ماذا يعني المحدد root في CSS؟ كانت الإجابة المقبولة   
    محدد الخاصية root في CSS يشير إلى العنصر الجذر في شجرة المستند الحالي DOM، عادة يكون ذلك العنصر هو العنصر html
    المثال المذكور يساوي التالي في مستند جذره العنصر html
    :root { --maincolor : red; } /* يساوي */ html { --maincolor : red; } يمكنك الاستفادة من قراءة المقال التالي:
     
  15. إجابة Hassan Hedr سؤال في كيف يمكن تحديد معرف id من جدول آخر بعد عمل Join في PHP كانت الإجابة المقبولة   
    بما أن الاستعلام الأساسي لعرض القائمة هو من جدول wishlist
    select * from wishlist ... فالأسطر في نتيجة هذا الاستعلام هي أسطر من wishlist مباشرة والحقل id هو خاص بسجل wishlist وليس المنتج،
    يمكنك تعديل اسم الحقل id لجدول المنتجات  وإعطاءه اسم مختلف كالتالي:
    select wishlist.*, product.id as 'product_id', product.name ... from wishlist inner join product on wishlist.prodect = product.id where user_id = '$user_id' لكن يجب ذكر كافة الحقول التي ستحتاجها من جدول product مكان النقاط "..."، نتيجة الاستعلام السابق يمكنك الحصول على معرف wishlist من الحقل id ومعرف product من الحقل product_id
  16. إجابة Hassan Hedr سؤال في كيفية تخزين مصفوفة Array في قاعدة البيانات في لارافيل Laravel؟ كانت الإجابة المقبولة   
    إذا أردت تخزين المصفوفة ضمن حقل واحد في جدول ضمن قاعدة البيانات يمكنك الاستفادة من خاصية التحويل التلقائي في لارافل Casting، ضمن النموذج الخاص بالجدول نقوم بتعريف نوع التحويل للخاصية بفرض أن الخاصية تسمى data نحدد نوع التحويل كالتالي:
    class MyModel extends Model { protected $casts = [ 'data' => 'array', // لتحويل الحقل لمصفوفة ]; } بعدها يمكنك التعامل مع الخاصية بشكل طبيعي ضمن المشروع فتعين قيمة مصفوفة لتلك الخاصية ويمكنك استخراجها منها كالتالي:
    $model = User::first(); // الخيار $data من نوع مصفوفة $data = $model->data; // يتم تحويل القيمة المسندة تلقائيًا $model->data = ['option_1' => '...'];  
  17. إجابة Hassan Hedr سؤال في كيفية الوصول إلى جسم الطلب request body في PHP؟ كانت الإجابة المقبولة   
    للوصول لجسم الطلب عبر المتغير POST_$ يجب أن يكون جسم الطلب من النوع multipart/form-data, أي الطلب سيحوي ترويسة Content-Type كالتالي:
    Content-Type: multipart/form-data إذا كان نوع جسم الطلب application/json فيجب الوصول إليه كالتالي:
    <?php $data = json_decode(file_get_contents("php://input")); echo $data->name, ' ', $data->age; // Mohssen 23  
  18. إجابة Hassan Hedr سؤال في كيفية حذف كل الملفات الموجودة في مجلد ما بإستخدام PHP؟ كانت الإجابة المقبولة   
    يمكن الاستعانة بالدوال glob لتوليد قائمة بالملفات المطلوب حذفها، والتابع unlink لحذف كل ملف من قائمة الملفات تلك، يمكن كتابة شيفرة لذلك كالتالي (مع استبدال مسار مجلد all_images):
    <?php $files = glob('path/to/all_images/*'); // جميع الملفات ضمن ذلك الملف foreach($files as $file){ unlink($file); // حذف الملف } أو يمكن كتابة السابق بطريقة أقصر كالتالي عبر الاستعانة بالتابع array_map للمرور على الملفات بدلًا من حلقة foreach:
    <?php array_map('unlink', array_filter((array) glob("path/to/all_images/*"))); ثم عليك تنفيذ النص البرمجي السابق بحسب الجدولة المطلوبة ضمن مشروعك لحذف الملفات
  19. إجابة Hassan Hedr سؤال في مشكلة في عدم تحميل المعلومات المخزنة في localStorage في جافاسكريبت كانت الإجابة المقبولة   
    المشكلة لديك هي في عدم عرض المهام المخزنة سابقًا عند عرض الصفحة في البداية، لذا يجب عليك جلب تلك المهام المخزنة مسبقا وعرضها فور تحميل الصفحة،
    يمكن حل المشكلة عبر كتابة تابع يقوم باستخراج المهام المخزنة والمرور عليها وإضافتها للصفحة بشكل مشابه لتابع إضافة المهمة لكن بدون عملية التخزين، وتنفيذه فورًا كالتالي:
    function init() { // جلب المهام المخزنة سابقًا const tasks = Object.values({ ...localStorage }); // عرض كل مهمة من المهام for (const task of tasks) { var div = document.createElement("div"), div2 = document.createElement("div"), div1 = document.createElement("div"), p = document.createElement("span"), x2 = document.createElement("span"); container.appendChild(div).appendChild(div1); div.classList.add("content"); div.appendChild(div2); p.innerText = task; p.classList.add("task"); div1.appendChild(p); x2.innerText = "✕"; x2.classList.add("x"); div2.appendChild(x2); } } // تنفيذ تابع عرض المهام المخزنة init() (يرجى عند إرفاق سؤالك في المرات القادمة إرفاق الشيفرة في كل من صفحة HTML و جافاسكريبت ضمن نص السؤال)
  20. إجابة Hassan Hedr سؤال في حل مشكلة كتابة الملف في قاعدة البيانات باستخدام buffer كانت الإجابة المقبولة   
    قيمة جسم الطلب المرسل إلى addProduct هي فقط نص الصورة على شكل base64، يجب إرسال باقي البيانات مع أسماءها الصحيحة ضمن الطلب بطرف العميل ووضع قيمة الصورة ضمن proImg ليتم استخراجها بشكل صحيح كالتالي:
    $.ajax({ type: 'POST', url: `${serverAddress}/product/add`, ... data: { proName: ..., proQuantity: ..., ... proImg: imageBase64 }, })  
  21. إجابة Hassan Hedr سؤال في خطأ عند إضافة مهام جديدة يتم حذف القديمة في جافاسكريبت كانت الإجابة المقبولة   
    يجب نقل عملية إنشاء العناصر الجديدة الخاصة بسطر المهمة لداخل معالج حدث الإضافة ضمن التابع tasks حتى يتم إضافة سطر جديد في كل مرة، يمكن حل المشكلة بالتعديل إلى التالي:
    var input1 = document.querySelector(".input1"), text1 = document.querySelector(".p1"), btn = document.querySelector(".btn1"), input2 = document.querySelectorAll(".input2"), container = document.getElementById("container1"), content = document.querySelector(".content") function tasks(value) { if (value.length < 1) { alert("Please enter a valid task"); } else { // إنشاء عناصر جديدة للمهمة var div = document.createElement("div"), div2 = document.createElement("div"), div1 = document.createElement("div"), p = document.createElement("span"), x2 = document.createElement("span") ... } }  
  22. إجابة Hassan Hedr سؤال في كيفية تغيير أتجاه الموقع dir لارافيل مع مبدل اللغات ؟ كانت الإجابة المقبولة   
    يمكنك إضافة التالي إلى العنصر الجذر لكل صفحات HTML ضمن المشروع (ملفات قوالب blade) وذلك لإدراج الخاصية dir بشكل عام من الموقع وهي ما تحدد اتجاه التنسيقات والتموضع للعناصر لتكون من اليمين لليسار أو العكس بحسب اللغة الحالية:
    <html dir="{{ App::isLocale('ar') ? 'rtl' : 'ltr'}}"> ... </html>  
  23. إجابة Hassan Hedr سؤال في كيفية ترجمة السلاسل النصية للرسائل بداخل المتحكمات لارافيل؟ كانت الإجابة المقبولة   
    يمكنك الاستعانة بالتابع المساعد trans لاستخراج القيمة النصية بترجمتها المناسبة بحسب اللغة الحالية للتطبيق أو المستخدم كالتالي: 
    session()->flash('message_key', trans('value of the message'));  
  24. إجابة Hassan Hedr سؤال في كيفية تحديد حجم أقصى لملف يتم رفعه في لارافيل Laravel؟ كانت الإجابة المقبولة   
    يمكنك تحديد الحد الأقصى للملف المرفوع كما تشاء باستخدام max كالتالي
    $validator = Validator::make($request->all(), [ 'file' => 'max:1024', // 1MB أقصى حجم ]); أو أقصى حجم أن يكون 500 كيلوبايت كالتالي
    $validator = Validator::make($request->all(), [ 'file' => 'max:500', // 500KB أقصى حجم ]);  
  25. إجابة Hassan Hedr سؤال في انشاء غرض ضمن كلاس main وادخال اسم باستخدام بطريقة التغليف كانت الإجابة المقبولة   
    يرجى التأكد من إضافة قوس الإغلاق للصنف admin، 
    class admin { ... } ^ class Main { ... } المشكلة الأخرى أن الحقول First_Name و Last_Name الوصول إليها محصور ضمن الصنف admin فقط لأنها private، يمكن بدلًا من ذلك استخدام التوابع setFirst_Name و setLast_Name كالتالي
    admin ad = new admin(); ad.setFirst_Name("Majd"); ad.setLast_Name("mm");  
×
×
  • أضف...