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

Mohammad Al Eik

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

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

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

كل منشورات العضو Mohammad Al Eik

  1. يمكنك الحصول على الid بعد حفظ المنتج في قاعدة البيانات بواسطة الاسم الخاص به.. أي كالتالي. $productId = Product::where('name', '=', $product->name)->first()->id; هنا قمنا بعملية بحث داخل جدول المنتجات للحصول على المنتج مطابق للاسم .. ثم نحصل على المعرف الخاص به ونخزنه في المتغير productId بهذه الطريقة يمكننا الحصول على ال id المنتج الذي تمت إضافته .. فيصبح الكود بشكل كامل .. ##عملية الإضافة $product = new Product; $product->name = $request->name; $product->price = $request->price; $product->save(); #عملية الحصول على المعرف $productId = Product::where('name', '=', $product->name)->first()->id;
  2. يمكنك القيام بذلك عبر الخطوات التالية : في البداية ننفذ التعليمة لنقوم بعملية التهجير php artisan make:migration add_login_fields_to_users_table ثم نذهب إلى المسار database/migrations ثم نفتح الملف add_login_fields_to_users_table ويكون الملف اسمه مع ارقام هي تاريخ انشاء هذا الملف class AddLoginFieldsToUsersTable extends Migration { public function up() { Schema::table('users', function (Blueprint $table) { $table->datetime('last_login_at')->nullable(); }); } } ثم الصق الكود السابق بدلاً عن الكود المكتوب في الملف الخطوة الثانية: اذهب إلى المسار app/User.php User.php هو ملف ال model الذي يحوي معلومات المستخدم وقد يكون اسم الملف مختلف لديك ع حسب الاسم الذي وضعته عندما انشئت جدول المستخدمين داخل الملف يوجد المصفوفة protected $fillable قم بإضافة العنصر التالي إليها protected $fillable = [ 'email', 'password', 'last_login_at', ///// هذا العنصر قم بإضافته ]; ثم إذهب إلى المسار التالي app/Http/Controllers/Auth/LoginController.php سوف تجد هذه الدالة التي تتنفذ عندما يقوم المستخدم بتسجيل دخوله protected function authenticated(Request $request, $user) { // } قم بحذفها وضع هذا الكود بدلاً عنها function authenticated(Request $request, $user) { $user->update([ 'last_login_at' => Carbon::now()->toDateTimeString() ]); } بهذه الطريقة سوف يضاف إلى جدول المستخدمين عمود لأخر تاريخ قام به المستخدم بتسجيل الدخول
  3. في نظام ويندوز ولينوكس نستخدم ctrl+z في نظام mac os نستخدم ⌘+z للقيام بعملية تراجع عن أخر شيء قمنا بحذفه وبإمكانك تكرار هذه الأختصارات لتعود لأكود أقدم واذا أردت التراجع عن عملية التراجع عن الحذف اضغط هذه الاختصارات في نظام ويندوز ولينوكس نستخدم ctrl+y في نظام mac os نستخدم ⌘+shift+z يمكنك تجربة هذه الأختصارات لديك داخل أي تطبيق محرر نصوص سواء vs code او غيره
  4. indexOf(value) > -1 تعني أن العنصر موجود, أي لنفرض اننا لدينا القائمة التالية const arr = ['x' , 'y' , 'z'] arr.indexOf('x') ===> 0 arr.indexOf('z') ===> 2 arr.indexOf('r') ===> -1 الدالة indexOf هي للحصول على مركز العنصر فإذا كان العنصر اكبر من -1 فإن العنصر موجود في القائمة اما اذا كان ناتج الدالة -1 أي أن العنصر غير موجود في القائمة
  5. $(this).toggle // هنا تقوم هذه الدالة بإخفاء أي عنصر لايطابف احرفه القيمة المدخلة بالحقل ($(this).text().toLowerCase().indexOf(value) > -1) // هنا نقوم بتحويل النص إلة أحرف صغيرة قمنا بالتحويل إلى أحرف صغيرة لأننا قمنا بتحويل النص داخل حقل الادخال إلى أحرف صغيرة بهذه الحالة لن يحث لدينا مشاكل بصيغة الأحرف
  6. للقيام بعملية بحث داخل مجموعة من المنتجات نستخدم الدالة عالية المستوى filter المثال التالي لنوضح العملية: لنفرض انه لدينا قائمة من المنتجات التالية <p>Type something in the input field to search the list for specific items:</p> <input id="myInput" type="text" placeholder="Search.."> <br> <ul id="myList"> <li>First item</li> <li>Second item</li> <li>Third item</li> <li>Fourth</li> </ul> نقوم بكتابة المعالجة المنطقية لعملية البحص باستخدام jquery <script> $(document).ready(function(){ $("#myInput").on("keyup", function() { //نقوم بتحديد حقل البحث var value = $(this).val().toLowerCase(); //نخزن القيمة المدخلة ونحولها الى small letter $("#myList li").filter(function() { //نحدد القائمة التي نريد فلترتها ونلحقها بالدالة عالية المستوى $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)//اظهار النتائج }); }); }); </script> بهذه الطريقة نفلتر القائمة التي لدينا ويمكنك استبدال العناصر li بأي عناصر تريدها سواء div او p او ....
  7. دعني أوضح لك بعض المافاهيم الأساسية في البداية: request هو غرض يحوي البيانات القادمة من طرف العميل store هي دالة نقوم بوضع المعالجة المنطقية للبيانات القادمة من طرف العميل بواسطة البارامتر request وتخزينها في قاعدة البيانات database مثال توضيحي : لنفرض لدينا model اسمها Post وهذه model تمثل جدول في قاعدة البيانات اسمه posts وهذا الجدول يحتوي على الخصائص التالية title , description نقوم بكتابة المعالجة المنطقية لإضافة post داخل الدالة store public function store(Request $request) { //هنا نتحقق بأن الغرض ريكويست يحوي على جميع البيانات الموجودة في الجدول الخاص بالمنشور $request->validate([ 'title' => 'required', 'description' => 'required', ]); //هنا نقوم بحفظ المنشور الجديد المتمثل بالغرض ريكويست Post::create($request->all()); } request$ هو الغرض الذي يحوي البيانات القادمة من العميل Request هي نوع نضعه بجانب الغرض لكي نخبر php اننا نريد استعمال الغرض الخاص ب http requests
  8. Flask هو إطار عمل ويب بلغة Python صغير وخفيف الحجم يوفر أدوات وميزات مفيدة تجعل إنشاء تطبيقات الويب بواسطة Python أسهل. يمنح المطورين المرونة وهو إطار عمل يسهل الوصول إليه للمطورين الجدد حيث يمكنك إنشاء تطبيق ويب بسرعة باستخدام ملف Python واحد فقط. يستخدم Flask محرك قوالب Jinja لبناء صفحات HTML ديناميكيًا باستخدام مفاهيم Python المألوفة مثل المتغيرات والحلقات والقوائم وما إلى ذلك. ستستخدم هذه النماذج كجزء من هذا المشروع. سيسمح لك Flask بإنشاء تطبيقات ويب بسرعة في Python. يمكنك الاستفادة من مكتبات Python لإضافة ميزات متقدمة إلى تطبيق الويب الخاص بك ، مثل تخزين بياناتك في قاعدة بيانات أو التحقق من صحة نماذج الويب. المتطلبات الأساسية للتعامل مع flask : HTML,CSS اساسيات فهم مفاهيم بايثون 3 الأساسية بيئة python نبذة بسيطة عن آلية عمل flask : سنقوم بكتابة الكود الذي سيهتم بمعالجة جانب الخادم. سوف يتلقى رمزنا الطلبات من صفحات HTML. سيحدد ما الذي تتعامل معه هذه الطلبات وما يطلبونه. سيحدد أيضًا الرد الذي يجب إرساله إلى المستخدم. اي أن العملية سوف تكون مراسلة بين السيرفر و صفحات القوالب المكتوبة ب html
  9. سبب المشكلة لديك أنك لاترسل المفتاح link في الطلب post في هذا السطر <input type="text" class="form-control" placeholder="{{__('home_page.write_a_link')}}"> قم بإضافة link داخل الخاصية name كالتالي <input name="link" type="text" class="form-control" placeholder="{{__('home_page.write_a_link')}}"> بهذه الطريقة سوف تحل المشكلة وسوف ترسل المفتاح link معل القيمة التي ادخلتها في الحقل لكي تتم معالجتها في ال controller
  10. الفرق بين module.exports و exports module.exports: نستعملها عندما نريد تصدير صف او تابع من module إلى أخرى. مثلا الشيفرة التالية module.exports = function doSomething() { return 10; }; قمنا بتعريف تابع وجعلناه يعيد قيمة, وهذه القيمة هي التي سوف نحصل عليها عندما نستورد هذا التابع في ملف آخر يتم استيراد التابع بالطريقة التالية باستعمال require const doSomething = require('./calculator.js'); //./calculator.js هو مسار الملف الذي يحوي التابع الذي نريد استيراده أما exports: نستعملها عندما نريد أن نصدر متغيرات او غرض أو قيمة معينة لاحظ المثال التالي exports.anObject = { x: 123, }; ونقوم بإستيراده باستخدام require أيضاً const anObject = require('./calculator.js');
  11. اولاً قومي بإنشاء حساب github من هنا ثم قومي بإنشاء repo من هنا اكتبي اسم المشروع تحت Repository name ثم اضغطي على Create repository ثم تظهر لكي نافذة فيها مجموعة تعليمات نفذي التعليمات الموجودة تحت …or push an existing repository from the command line نفذيها على التوالي تباعاً داخل مجلد المشروع خاصتك بواسطة موجه الأوامر
  12. في نسخة bootstrap 5 وبعدها تم الأستغناء عن jquery بالكامل . لذا لاداعي لاستخدام مكتبة jquery او الكود الخاص بها . اكتفي بتضمين التالي داخل ملف ال html داخل ال head ضع <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous"> وداخل ال body في نهايتها ضع <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script> فقط هكذا وسيمكنك استخدام جميع مكونات بوتستراب من دون jquery
  13. سبب المشكلة لديك أن MongoDB تقدم خاصية اتصال لاتدعمها Prisma يمكنك تفادي المشكلة بإضافة التالي إلى الرابط الذي تعرف به الأتصال بقاعدة البيانات MongoDB داخل ملف env بإضافة ?retrywrites=false في نهاية الرابط DATABASE_URL="mongodb://localhost:27017/prismaApp?retrywrites=false"
  14. لجعل ال Background color تلائم حجم النص يمكنك إضافة هذه الخاصية إلى h1 h1{ width: fit-content; } ولإضافة حواف نستخدم الخاصية التالية : border: blue solid 1px; //نحدد اللون والنوع والسماكة للحواف
  15. قم بإرسال ملف المشروع من فضلك لكي أستطيع إيجاد المشكلة. قم بالضغط زر يمين على مجلد المشروع ثم compress ثم قم بإرسال الملف لي
  16. الطريقة الأفضل والأسهل هي إنشاء ملف Html لكل لغة . مثل Home.en.html و Home.ar.html ولكن عليك معالجةأتجاه النصوص سواء كان من اليسار إلى اليمين ltr او من اليمين إلى اليسار عن طريق الخاصية dir <p dir="rtl">Write this text right-to-left!</p> او عند استخدام اللغة العربية : <p dir="ltr">مرحباً بك صديقي</p>
  17. يوجد طريقة أخرى من دون jQuery قومي بإستبدال الكود داخل index.js بالكود التالي var scrollPosition = window.scrollY;//هنا قمنا بتحديد جهة السكرول var logoContainer = document.getElementById("navBar") // حددنا العنصر الذي نريده بواسطة الأي دي الخاص به window.addEventListener('scroll', function() { //وضعنا متنصت على حدث السكرول scrollPosition = window.scrollY; if (scrollPosition >= 30) { logoContainer.classList.add('noTransparrent');//هنا نضيف الكلاس } else { logoContainer.classList.remove('noTransparrent'); //هنا نحذف الكلاس } });
  18. سبب المشكة أنكي لاتستدعين مكتبة jQuery داخل ملفات html قوم بوضع هذا الوسم في نهاية <body> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> أي تحت هذا السطر <!-- Bootstrap Bundle with Popper --> هكذا سوف تقومين بتحميل مكتبة jQuery وبالتالي إستخدامها في ال navbar
  19. عندما نريد تخصيص شكل ل القائمة العلوية نقوم بذلك عند كلاس navbar داخل ملف posts.css طبقي الكود التالي في السطر 11 nav.navbar { z-index: 15; background-color: white; //نطبق لون للخلفية border-bottom: black 1px solid; //هنا نضع حافة نحدد لونها وسماكتها ونوعها }
  20. هل يمكنك إرسال صورة للقائمة التي تريدين عمل scroll عليها
  21. يمكنك الحصول على QuerySet لحقول معينة بطريقتين : الطريقة الأولى : Users.objects.values_list('user_name', flat=True)#نضع اسم الحقل الذي نريده الطريقة الثانية : Users.objects.only('user_name')#نضع اسم الحقل الذي نريده
  22. في البداية لاداعي لوضع خاصية autoincrement , ستهتم SQLAlechemy's ORM بإنشاء ال ids تتم زيادة Id تلقائيًا بشكل افتراضي حتى بدون تعيين autoincrement = علامة True . لذا قم بتعديل الكود من : id = db.Column(db.Integer, primary_key=True, autoincrement=True) إلى : id = db.Column(db.Integer, primary_key=True) وسوف تحل المشكلة .
  23. هل يمكنك إرسال ملفات المشروع بملف مضغوط لكي استطيع مساعدتك في حل المشكلة الثانية ؟
  24. أرجو أن تصور لي رسالة الخطأ بالكامل من أول كتابتك أمر npm run watch
×
×
  • أضف...