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

Mohammad Al Eik

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

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

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

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

  1. إجابة Mohammad Al Eik سؤال في كيفية تخزين آخر وقت قام فيه المستخدم بتسجيل الدخول إلى الموقع في لارافيل Laravel؟ كانت الإجابة المقبولة   
    يمكنك القيام بذلك عبر الخطوات التالية :
    في البداية ننفذ التعليمة لنقوم بعملية التهجير 
    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() ]); } بهذه الطريقة سوف يضاف إلى جدول المستخدمين عمود لأخر تاريخ قام به المستخدم بتسجيل الدخول
  2. إجابة Mohammad Al Eik سؤال في كيفية اضافة search bar للبحث داخل الموقع كانت الإجابة المقبولة   
    للقيام بعملية بحث داخل مجموعة من المنتجات نستخدم الدالة عالية المستوى 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 او ....
  3. إجابة Mohammad Al Eik سؤال في أريد شرح للدالة store ما معني Request $request فقط ؟ كانت الإجابة المقبولة   
    دعني أوضح لك بعض المافاهيم الأساسية في البداية:
    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
  4. إجابة Mohammad Al Eik سؤال في خطأ تطبيق لارافيل لاختصار الروابط  كانت الإجابة المقبولة   
    سبب المشكلة لديك أنك لاترسل المفتاح 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
  5. إجابة Mohammad Al Eik سؤال في اريد تثبيت Prisma مع MongoDB و Next.js كانت الإجابة المقبولة   
    سبب المشكلة لديك أن MongoDB  تقدم خاصية اتصال لاتدعمها Prisma يمكنك تفادي المشكلة بإضافة التالي إلى  الرابط الذي تعرف به الأتصال بقاعدة البيانات MongoDB داخل ملف env
    بإضافة ?retrywrites=false في نهاية الرابط
    DATABASE_URL="mongodb://localhost:27017/prismaApp?retrywrites=false"  
     
  6. إجابة Mohammad Al Eik سؤال في كيفية الحصول على QuerySet لكل الصفوف مع تحديد حقول معينة في جانغو Django؟ كانت الإجابة المقبولة   
    يمكنك الحصول على QuerySet لحقول معينة بطريقتين : 
    الطريقة الأولى : 
    Users.objects.values_list('user_name', flat=True)#نضع اسم الحقل الذي نريده الطريقة الثانية :
    Users.objects.only('user_name')#نضع اسم الحقل الذي نريده  
  7. إجابة Mohammad Al Eik سؤال في لا يمكن إضافة الخاصية autoincrement إلى id في نموذج model في فلاسك Flask؟ كانت الإجابة المقبولة   
    في البداية لاداعي لوضع خاصية 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) وسوف تحل المشكلة .
  8. إجابة Mohammad Al Eik سؤال في إرسال صورة مُنتجة بإستخدام PIL إلى المتصفح في فلاسك Flask؟ كانت الإجابة المقبولة   
    في البداية نريد ان نستدي المكتبات التالية :
    from PIL import Image import base64 import io ثم  نختار الصورة التي سننقلها إلى المستخدم ونقرأها بمساعدة PIL
    im = Image.open("test.jpg") #NOTE : يجب عليك التأكد من صحة مسار الملف بعد ذلك ، باستخدام BytesIO نحصل على المعلومات الموجودة في الذاكرة لحفظ الصورة التي قرأناها للتو.
    data = io.BytesIO()  
    ثم نستخدم المعلومات الموجودة في الذاكرة التي حصلنا عليها باستخدام BytesIO في وظيفة save () داخل مكتبة PIL.
    im.save(data, "JPEG") ثم نقوم بترميز ملف الصورة المحفوظ بإستخدام مكتبة base64
    encoded_img_data = base64.b64encode(data.getvalue()) بعد العمليات المذكورة أعلاه ، أصبحت صورتنا جاهزة الآن لإرسالها.
    أصبح لدينا الكود الكامل على الشكل التالي
    from flask import Flask, render_template from PIL import Image import base64 import io app = Flask(__name__) @app.route('/') def hello_world(): # Full Script. im = Image.open("test.jpg") data = io.BytesIO() im.save(data, "JPEG") encoded_img_data = base64.b64encode(data.getvalue()) return render_template("index.html", img_data=encoded_img_data.decode('utf-8')) if __name__ == '__main__': app.run(host='0.0.0.0') وفي ملف ال html نتعامل مع الصورة المستقبلة بالشكل التالي 
    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Test Image</title> </head> <body> <img id="picture" src="data:image/jpeg;base64,{{ img_data }}">//هنا نضع خصائص الصورة </body> </html>  
  9. إجابة Mohammad Al Eik سؤال في خطأ get() got an unexpected keyword argument 'pk' في جانغو Django كانت الإجابة المقبولة   
    سبب المشكلة لديك هو مشكلة تضارب لأنك تقوم بتسمية كلاس ال view بنفس اسم ال Model وهذا يؤدي إلى إستخدام كلاس ال view بدلاً عن كلاس model
     لذلك عليك أختيار اسم اخر مثل ProductView 
    class ProductView(View): model = Product def get(self, request, resource_id): resource = get_object_or_404(Product, pk=resource_id) context = { 'resource': resource } return render(request, 'product.html', context)  
  10. إجابة Mohammad Al Eik سؤال في كيفية تنفيذ حدث مرة واحدة عند النزول لأسفل الصفحة بواسطة جافا سكريبت كانت الإجابة المقبولة   
    يمكنك اضافة متغير نحفظ فيه أن التابع قد تنفذ أم لا ك boolean 
    var firstScroll = false;//نضع هذا المتغير كقيمة إفتراضية window.onscroll = function() { if(firstScroll===false){//لن ينفذ التابع إلا إذا كانت قيمة المتغير false scrollLoad() } }; function scrollLoad() { if (document.body.scrollTop > 1 || document.documentElement.scrollTop > 1) { firstScroll = true;//نغير قيمة المتغير إلى ترو لكي لاينفذ مرة اخرى createLinkCss('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css','head'); }  
  11. إجابة Mohammad Al Eik سؤال في عمل map لمصفوفة و عرض محتوايتها داخل carousel bootstrap فيReactJs كانت الإجابة المقبولة   
    يمكنك ذلك بالطريقة التالية :
    import React from "react"; import { Carousel } from "react-bootstrap"; const reviews = [ //المصفوفة التي تحوي البيانات المراد عرضها { id: 1, image: "an image url", author: "john doe" }, { id: 2, image: "an image url", author: "jane doe" }, { id: 3, image: "an image url", author: "dane doe" } ] function Entry() {//المكون return ( <Carousel>//المكون الخاص ب بوتستراب //هنا نقوم بعملة الدخول الى المصفوفة وعرضة محتوياتها {reviews.map(review => ( //نعرض المكون لكل عنصر في المصفوفة <Carousel.Item key={review.id}> <img src={review.image} alt={review.author} /> </Carousel.Item> ))} </Carousel> ); } export default Entry;
  12. إجابة Mohammad Al Eik سؤال في ظهور الخطأ undefined is not an object عند جلب الداتا من async storage وأضعها في FlatList كانت الإجابة المقبولة   
    خاصية الkeyExtractor هية مثل خاصية key في react.js وهي لإعطاء مفتاح مميز لكل عنصر يتم عرضه
    سبب المشكلة هو أنك تستخدم toString في خاصية الkeyExtractor على العنصرر item
    يمكنك الاستغناء عنها وسوف تحل المشكلة 
    <FlatList data={Books} keyExtractor={item => item.id} renderItem={({item}) => <Text>{item.id}</Text>} /> أما اذا كنت تريد أن يكون ال key نوعه string بالتحديد يمكنك تحويل الindex بدلاً عن ذلك 
    <FlatList data={Books} keyExtractor={(item, index) => index.toString()} renderItem={({item}) => <Text>{item.id}</Text>} />  
×
×
  • أضف...