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

بلال زيادة

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

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

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

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

    30

كل منشورات العضو بلال زيادة

  1. هل من الممكن إرفاق المشروع الخاص بك ؟ سأعمل على تصميم واجهة سلتي كاملاً بحيث تشبه التصميم الذي تريده مع إرفاق طرق الدفع.
  2. اخي هاي عبارة عن صورة واحدة بتوضع للزبون انه يمكنك باستخدام باي بال أنك تقدر تدفع من حسابك و ايضا من البطاقة الأئتمانية.
  3. يمكنك صفحة الدفع تغيير شكلها كيف ما تريد بحيث تضع تحت المجموع أي طريقة دفع, يعني مجرد تغيير ستايل الواجهة الأمر متروك لك كيف تخلي شكل الواجهة. عند دخول الزبون للدفع عن طريق بي بال, باي بال تخيره الدفع من حسابه أو من بطاقة أئتمانية. ما بتقدر تغير شكل صفحة بي بال لأنه انتا بتفتحها من ويب فيو في التطبيق.
  4. تأكد أنه يوجد سجل ليوزر id الخاص به يساوي 1. مثال: <?php $sql = "UPDATE users SET name=?, surname=? WHERE id=?"; $stmt= $pdo->prepare($sql); $stmt->execute([$name, $surname, $id]); ?> إذا بقيت المشكلة هل من الممكن إرفاق الكود في الملف كاملاُ.
  5. إذا بتقصد الدفع باستخدام البطاقة الأئتمانية بدون بي بال يجب الأشتراك في بوابة دفع مثل Stripe, Razorpay, 2checkout وغيرها من بوابات الدفع, طبعا كل بوابة دفع لها SDK خاص بالتعامل مع الموبايل, ويمكنك ربط كل بوابة بتطبيقك بشكل كامل بعد قبول حسابك في أي من البوابات هذه. أما بخصوص الدفع من خلال حسابي بي بال و أن يقوم العضو بالدفع من البطاقة الأئتمانية الخاصة به إذا كان رابط حساب بي بال ببطاقة أئتمانية فكالتالي كودك بيكون صحيح إذا كان بيعمل بشكل صحيح و أنه بيخصم من الحساب لمن تدفع باستخدام بي بال فحينها لو العضو رابط حسابه البي بال ببطاقة أئتمانية هين بي بال لو كان حسابه ما فيه المبلغ المطلوب بتخليه يقدر يدفع من بطاقته الأئتمانية. بتمنى تكون وضحت الفكرة.
  6. في هذا السؤال يمكنك إيجاد ما تريده لقد قام شخص أخر بطرحه و أجبته بشكل مفصل.
  7. يمكنك استخدام وسم map في HTML بحيث تدرج الصورة ومن ثم تحديد map لها وتحديد الأحداثيات لكل حرف باستخدام خاصية coords. فمثلا <!DOCTYPE html> <html> <body> <img src="planets.gif" width="145" height="126" usemap="#image"> <map name="image"> <area shape="rect" coords="0,0,82,126" href=""> <area shape="circle" coords="90,58,3" href=""> <area shape="circle" coords="124,58,8" href=""> </map> </body> </html> فكل سهم يشير إلى أحداثيات كل منطقة في الصورة بحيث لو قمت بالضغط على أي منطقة محددة تستطيع فعل أي حدث على هذه المنطقة, ممكن ان تقوم بتشغيل صوت , أو التحويل إلى صفحة معينة, أو وضع tooltip على هذه المنطقة, الأمر متروك لك, يمكنك القراءة أكثر عن هذا الوسم بالدخول إلى موسوعة حسوب من هنا وأيضا يمكنك مشاهدة أمثلة على هذا الوسم من هنا. أيضا هذه الوسم يكثر استخدامه في برمجة الألعاب حتى تستفيد من الصورة بوضع أكثر من حدث عليها او تقسيمها إلى مناطق فلو شاهدت التالي تجد ان هذا المثال اكثر وضوحاً من قبله بحيث قمنا بالاستفادة من الصورة و جعلناها مناطق و وكل دائرة هي عبارة عن منطقة. أرجوا قد وضح المثال ووضحت الفكرة لديك.
  8. أولا: يجب تعلم HTML كاملاً, لماذا ؟ لانها تمثل لغة ترميز تستخدم في إنشاء و تصميم مواقع الويب, هذه اللغة تحتوي على وسوم (tags) هذه الوسوم عن طريقها تستطيع بناء الموقع (هيكل الموقع) من header أعلى الصفحة, إلى footer أخر الصفحة, إلى sections تكون بين رأس الصفحة و أخر الصفحة, عادة sections هي المتغيرة من صفحة إلى أخرى في الموقع. بعد أن قمنا بتصميم هيكل الموقع, يجب أن نقوم بتنسيق الصفحة كي تكون ملائمة لتظهر للمستخدمين بشكل أفضل و تنسيق رائع وتعطي تجربة مستخدم أفضل, هنا يأتي دور استخدام CSS هذه اللغة تحتوي على Attributes هذه الخواص دورها تنسيق الصفحة فمثلا ممكن ان ننشأ ب html وسم عمل فقرة, فكيف سأقوم بوضع لون لهذه الفقرة ؟ كل ما عليك شو استخدام CSS فمثلاً <html> <body> <p>أهلا بالعالم !</p> </body> </html> هذا كود HTML نضيف له خاصية من خواص CSS لنعطي الفقرة لون أحمر مثلاً <html> <head> <style> p{ color: red; } </style> </head> <body> <p>أهلا بالعالم !</p> </body> </html> كما وضحنا بالمثال انه قمنا باستخدام HTML, CSS لكي نبني و ننسق الصفحة, هل هذا يكفي ؟ الإجابة في بعض المواقع يمكن أن تكفي HTML, CSS في برمجة مواقع ثابتة أي لا تتغير إلا بتغيير الكود المستخدم فيها, وبعض المواقع لا يكفي إلا باستخدام JavaScript مع HTML. CSS لتعطي تفاعلاً أكبر مع المستخدم الذي يزور الصفحة. و لجعل الموقع أكثر تفاعلاً و يكون ديناميكاً في تعامل المستخدمين معه يجب استخدام لغة تستخدم من جانب الخادم وهي لغات كثر فممكن أن تستخدم PHP, Python, Node.js هذه اللغات تستطيع التعامل مع قواعد البيانات و التعامل مع خواص قواعد البيانات CRUD, أي C => Create R => Read U => Update D => Delete فالألية كالتالي: تعلم HTML في البداية. تعلم CSS لتنسيق الصفحات بعد إنشائها باستخدام HTML. تعلم JavaScript لتفاعل الموقع مع المستخدمين. تعلم لغة من طرف الخادم لجعل الموقع ديناميكاً مثل PHP, Python, Node.js. تعلم SQL لتستطيع التعامل مع قواعد البيانات.
  9. يمكنك تعلم برمجة مواقع الويب, كل ما يلزمك هو تعلم اللغات المستخدمة في برمجة مواقع الويب مثل HTML, CSS , JavaScript, PHP, Python, Node.js. يمكنك البدء ب html و يمكنك مشاهدة دورات على اليوتيوب تعلمك بناء هيكلية الموقع باستخدام هذه اللغة ومن ثم البدء بلغة css كي تقوم بوضع تنسيقات على الصفحات التي تنشأها باستخدام HTML. أيضا يمكنك تعلم بعدها javascript لتعطي أنيمشن و حركات للصفحة كي يستطيع الزائر التعامل مع الصفحة, و أخيرا يمكنك البدء بلغة تجعل الموقع يتفاعل مع المستخدمين ويخزن البيانات او يعرض عليهم محتويات بشكل ديناميكي باستخدام لغات مثل: PHP, Python, Node.js. ولكن هذا يضل حسب رغبتك في أي تريد التعلم والبدء فيها. بعد اتقان مجال معين يمكنك البدء بمشروعك أو العمل عن بعد عن طريق مواقع العمل الحر.
  10. يمكنك النظر إلى التوثيق الخاص لشركة paypal و قراءة كيفية ربط paypal مع التطبيق الخاص بك.
  11. صحيح يمكن وضع قيم ثابتة ولا يمكن للعضو مشاهدة هذه البيانات, الأمر مبني على كيفية استخدامك للبيانات و هل تريد عرضها ام لا.
  12. ممكن تجعل المستخدم يقوم بتعديل وحفظ البيانات مرة واحدة, ومن ثم تقوم في واجهة الدفع بعرض فقط وسيلة الدفع بدون عرض فورم لتعبئة البيانات مثل بيانات العنوان والاسم و معلومات الشحن, فقط تقوم بجلب البيانات من model الخاص باليوزر بعد أن تحفظ البيانات بداخله مثلاً. طبعا يتم تمرير بيانات المستخدم من api الي بيرجع بيانات المستخدم إلى class model و عن طريق class model يمكن جلب البيانات. هناك طريقة أخرى هي فصل الواجهات فمثلا واجهة لتعبئة البيانات الشخصية تحتوي على الاسم والبريد الإلكتروني و باقي المعلومات, و من الواجهة الثانية تكون تعبئة معلومات وعنوان الشحن كاملا, و في اخر واجهة تعرض طريقة الدفع المختارة. الفكرة هي استغلال البيانات التي تمررها لأي كلاس Model مسؤول عن أي واجهة. فمثلا في لغة فلاتر أقوم بعمل التالي عندي كلاس model لمعلومات الزبون أو العضو class CustomerDetailModel { int id; String firstName; String lastName; String email; Billing billing; Shipping shipping; CustomerDetailModel( {this.id, this.firstName, this.lastName, this.email, this.billing, this.shipping}); CustomerDetailModel.fromJson(Map<String, dynamic> json) { id = json['id']; firstName = json['first_name']; lastName = json['last_name']; email = json['email']; billing = json['billing'] != null ? new Billing.fromJson(json['billing']) : null; shipping = json['shipping'] != null ? new Shipping.fromJson(json['shipping']) : null; } } class Billing { String firstName; String lastName; String company; String address1; String address2; String city; String postcode; String country; String state; String email; String phone; Billing( {this.firstName, this.lastName, this.company, this.address1, this.address2, this.city, this.postcode, this.country, this.state, this.email, this.phone}); Billing.fromJson(Map<String, dynamic> json) { firstName = json['first_name']; lastName = json['last_name']; company = json['company']; address1 = json['address_1']; address2 = json['address_2']; city = json['city']; postcode = json['postcode']; country = json['country']; state = json['state']; email = json['email']; phone = json['phone']; } Map<String, dynamic> toJson(){ final Map<String, dynamic> data = new Map<String, dynamic>(); data['first_name'] = this.firstName; data['last_name'] = this.lastName; data['company'] = this.company; data['address_1'] = this.address1; data['address_2'] = this.address2; data['city'] = this.city; data['postcode'] = this.postcode; data['country'] = this.country; data['state'] = this.state; data['email'] = this.email; data['phone'] = this.phone; return data; } } class Shipping { String firstName; String lastName; String company; String address1; String address2; String city; String postcode; String country; String state; Shipping( {this.firstName, this.lastName, this.company, this.address1, this.address2, this.city, this.postcode, this.country, this.state,}); Shipping.fromJson(Map<String, dynamic> json) { firstName = json['first_name']; lastName = json['last_name']; company = json['company']; address1 = json['address_1']; address2 = json['address_2']; city = json['city']; postcode = json['postcode']; country = json['country']; state = json['state']; } Map<String, dynamic> toJson(){ final Map<String, dynamic> data = new Map<String, dynamic>(); data['first_name'] = this.firstName; data['last_name'] = this.lastName; data['company'] = this.company; data['address_1'] = this.address1; data['address_2'] = this.address2; data['city'] = this.city; data['postcode'] = this.postcode; data['country'] = this.country; data['state'] = this.state; return data; } } و عندما أريد استخدام البيانات التي تم تمريرها إلى كلاس Model في واجهة الدفع كالتالي class OrderModel { OrderModel({ this.id, this.parentId, this.number, this.orderKey, this.total, this.billing, this.shipping, this.paymentMethod, this.paymentMethodTitle, this.transactionId, }); int id; int parentId; String number; String orderKey; String total; String totalTax; Ing billing; Ing shipping; String paymentMethod; String paymentMethodTitle; String transactionId; factory OrderModel.fromJson(Map<String, dynamic> json) => OrderModel( id: json["id"], parentId: json["parent_id"], number: json["number"], orderKey: json["order_key"], shippingTotal: json["shipping_total"], shippingTax: json["shipping_tax"], total: json["total"], totalTax: json["total_tax"], billing: Ing.fromJson(json["billing"]), shipping: Ing.fromJson(json["shipping"]), paymentMethod: json["payment_method"], paymentMethodTitle: json["payment_method_title"], transactionId: json["transaction_id"], ); Map<String, dynamic> toJson() => { "id": id, "parent_id": parentId, "number": number, "order_key": orderKey, "shipping_total": shippingTotal, "shipping_tax": shippingTax, "total": total, "total_tax": totalTax, "billing": billing.toJson(), "shipping": shipping.toJson(), "payment_method": paymentMethod, "payment_method_title": paymentMethodTitle, "transaction_id": transactionId, }; } void createOrder() async { if(_ordersModel.shipping == null){ _ordersModel.shipping = this.customerDetailModel.shipping; } if(this.customerDetailModel.shipping != null){ _ordersModel.shipping = this.customerDetailModel.shipping; } if(_ordersModel.billing == null){ _ordersModel.billing = this.customerDetailModel.billing; } if(this.customerDetailModel.billing != null){ _ordersModel.billing = this.customerDetailModel.billing; } if(ordersModel.lineItems == null){ _ordersModel.lineItems = new List<LineItems>(); } } جميع الأمثلة الموضحة مكتوبة بلغة Flutter
  13. تم إضافة جلسة session إلى الكود و تم التأكد من عمله أيضا <?php session_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <form name="newad" method="post" enctype="multipart/form-data" action="index.php"> <table border="1"> <tr><td> <input type="file" name="image" id="" required> </td></tr> <tr><td> <input type="hidden" name="MAX_FILE_SIZE" value="90000" /> </td></tr> <tr><td><input name="describe" type="text" size="25" maxlength="100" required > </td></tr> <tr><td> <input name="Submit" type="submit" value="Upload image"> </td></tr> </table> </form> <?php $con = mysqli_connect("localhost", "root", "") or die ("فشل في الإتصال بقاعدة البيانات"); $db=mysqli_select_db($con, 'tc'); define ("MAX_SIZE","1000"); // this function to get extension of files................. function getExtension($str) { $i = strrpos($str,"."); if (!$i) { return ""; } $l = strlen($str) - $i; $ext = substr($str,$i+1,$l); return $ext; } $errors=0; if(isset($_POST['Submit'])) { $image=$_FILES['image']['name']; if ($image) { $filename = stripslashes($_FILES['image']['name']); $extension = getExtension($filename); $extension = strtolower($extension); if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) { echo '<h1>Unknown extension!</h1>'; $errors=1; } else { //$size= filesize($_FILES['image']['name']); $size = $_FILES["image"]["size"]; if ($size > MAX_SIZE*1024) { echo '<h1>You have exceeded the size limit!</h1>'; $errors=1; } $image_name=time().'.'.$extension; $newname="upload/".$image_name; //$copied = copy($_FILES['image']['tmp_name'], $newname); $copied = move_uploaded_file($_FILES["image"]["tmp_name"], $newname); if (!$copied) { echo '<h1></h1>'; $errors=1; }}}} if(isset($_POST['Submit']) && !$errors) { echo "<h1></h1>"; // echo "<img src=$newname>"; // ------------------- To Save Path of Image in DataBase and show it on Browser... $id = $_POST['id']; $describe = $_POST['describe']; $_SESSION['image_name'] = $newname; $result = @mysqli_query($con, "INSERT INTO `news` VALUES ('$id','$newname','$describe',NOW() )"); if($result) { header("location:session.php"); } else { echo "error"; } } ?> </body> </html> وملف session.php <?php session_start(); //عمل حالة شرطية للمقارنة if ($_SESSION['browser'] !== $_SERVER['HTTP_USER_AGENT']) { //sessionانهاء ال session_destroy(); echo "أنت غير معتمد"; exit(); } echo " "; ?> <img src="<?php echo $_SESSION['image_name']; ?>" />
  14. قم بتشغيل الأمر في terminals و التحقق من أن كل شيء يعمل بشكل صحيح عن طريق الأمر التالي flutter doctor وإذا ظهرت أخطاء هل من الممكن تزويدي بها. أيضا يمكنك في المسار التالي android/build.gradle تغيير android { compileSdkVersion 30 } وتأكد من تنزيل Android 11.0 (R) في sdk الخاص بالأندرويد, إذا لم تقم بتنزيل Android 11.0(R) أذهب إلى أيقونة SDK Manager و من ثم الذهاب إلى SDK Platforms ومن ثم أختيار Android 11.0 (R) وبعدها ثم بالضغط على apply.
  15. قم بالدخول الى مجلد App\Helpers ومن ثم التأكد من الملف هل يوجد أو لا. إذا كان موجود يمكنك التحقق من اسمه و طريقة استدعائه تمام. أو معرفة ما يقوم به الملف و هي برمجة المهام التي يقوم بها غالبا لن يكون معقد. إيضا يمكن الرجوع إلى توثيق الشركة و قراءة التوثيق كاملا ستجد حل كاملاً, ربما يكون هناك تحديث جديد للملفات قد تحل المشكلة.
  16. كل ما عليك هو إضافة جلسة session كالتالي session_start(); في أول الصفحة كي تسجل جلسات session. ومن ثم يمكنك عند رفع الصورة وتخزين اسمها في قاعدة البيانات أن تقوم بتخزين اسمها في جلسة ولتكن مثل $_SESSION['image_name'] = $imageName; بحيث أن $_SESSION['image_name' هي مفتاح الجلسة و قيمتها هي اسم الصورة وفي الصفحة الثانية هي تقوم بعرض محتوى الجلسة المحفوظة في جلسة session في وسم img ليعرض الصورة كالتالي <im src="uploads/<?php echo $_SESSION['image_name']; ?>" alt="" />
  17. يمكنك تعلم برمجة مواقع الويب أو برمجة تطبيقات الجوال, ولكن هذا يتناسب مع رغبتك في أيهما ستكون قابلية التعلم فيها سريعة عندك. برمجة مواقع الويب, كل ما يلزمك هو تعلم اللغات المستخدمة في برمجة مواقع الويب مثل HTML, CSS , JavaScript, PHP, Python, Node.js. يمكنك البدء ب html و يمكنك مشاهدة دورات على اليوتيوب تعلمك بناء هيكلية الموقع باستخدام هذه اللغة ومن ثم البدء بلغة css كي تقوم بوضع تنسيقات على الصفحات التي تنشأها باستخدام HTML. أيضا يمكنك تعلم بعدها javascript لتعطي أنيمشن و حركات للصفحة كي يستطيع الزائر التعامل مع الصفحة, و أخيرا يمكنك البدء بلغة تجعل الموقع يتفاعل مع المستخدمين ويخزن البيانات او يعرض عليهم محتويات بشكل ديناميكي باستخدام لغات مثل: PHP, Python, Node.js. برمجة التطبيقات الجوال, هناك نظامي تشغيل للجوالات, Android, iOS. يمكنك تعلم java , kotlin لبرمجة تطبيقات Android باستخدام برنامج Android Studio. يمكنك تعلم Swift, objective-c لبرمجة تطبيقات iOS باستخدام برنامج xcode. أو بتعلم لغات تستخدم في برمجة التطبيقات وهي تطبيقات هجينة مثل Flutter, Cordova, Ionic. ولكن هذا يضل حسب رغبتك في أي تريد التعلم والبدء فيها. بعد اتقان مجال معين يمكنك البدء بمشروعك أو العمل عن بعد عن طريق مواقع العمل الحر.
  18. أخي لاحظ أن الكود المرفق هو شغال و يتم تخزين البيانات داخل قاعدة البيانات, هل من الممكن تعمل لقطة شاشة لقاعدة البيانات عندك ؟
  19. شكرا أخي لرفعك الكود كاملاً, لقد وجدت خطأ في دالة التحقق من size الملف وقد تم استبدالها $size = $_FILES["image"]["size"]; و قد رفع الملف بنجاح وبدون أي مشكلة, الكود كاملاً. <form name="newad" method="post" enctype="multipart/form-data" action="index.php"> <table> <tr><td><input type="file" name="image"></td></tr> <input type="hidden" name="MAX_FILE_SIZE" value="90000" /> <tr><td><input name="Submit" type="submit" value="Upload image"></td></tr> </table> </form> <?php $con = mysqli_connect("localhost", "root", "") or die ("فشل في الإتصال بقاعدة لبينات "); $db=mysqli_select_db($con, 'tc'); define ("MAX_SIZE","1000"); // this function to get extension of files................. function getExtension($str) { $i = strrpos($str,"."); if (!$i) { return ""; } $l = strlen($str) - $i; $ext = substr($str,$i+1,$l); return $ext; } $errors=0; if(isset($_POST['Submit'])) { $image=$_FILES['image']['name']; if ($image) { $filename = stripslashes($_FILES['image']['name']); $extension = getExtension($filename); $extension = strtolower($extension); if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) { echo '<h1>Unknown extension!</h1>'; $errors=1; } else { //$size= filesize($_FILES['image']['name']); $size = $_FILES["image"]["size"]; if ($size > MAX_SIZE*1024) { echo '<h1>You have exceeded the size limit!</h1>'; $errors=1; } $image_name=time().'.'.$extension; $newname="upload/".$image_name; //$copied = copy($_FILES['image']['tmp_name'], $newname); $copied = move_uploaded_file($_FILES["image"]["tmp_name"], $newname); if (!$copied) { echo '<h1>Copy unsuccessfull!</h1>'; $errors=1; }}}} if(isset($_POST['Submit']) && !$errors) { echo "<h1>File Uploaded Successfully! Try again!</h1>"; // echo "<img src=$newname>"; // ------------------- To Save Path of Image in DataBase and show it on Browser... $result = @mysqli_query($con, "INSERT INTO `news` VALUES ('', '$newname')"); if($result) { echo "file added"; } else { echo "error"; } $gotten = @mysqli_query($con, "Select * From news"); while($row = @mysqli_fetch_array($gotten)) { $pic=$row['path']; $id=$row['id']; // echo "<img src=$pic>"; // Here to Display Image on Browser and In Blank Browser if you like..... echo " <a href='$pic' target='_blank'><img border='0' src=$pic alt=$pic></a> "; } } ?>
  20. أخي أرفق مجلد مشروعك كاملا مع التعديلات التي قمت بتعديلها كي أنظر من جديد
  21. يمكنك شراء شهادة SSL وتركيبها على الأستضافة التي تشتريها من شركات الأستضافة. هناك استضافات عندما تحجز منها استضافة توفر شهادة ssl مجانية و أو شراء شهادة SSL لمدة تحددها شركة الاستضافة. يمكنك من خيار SSL/TLS تركيب الشهادة المتوفرة لديك. بعد التركيب يمكن إضافة إلى ملف .htaccess الكود حتى تجبر الموقع على استخدام https في الصفحات. RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteOptions inherit RewriteEngine on Header set content-Security-Policy: upgrade-insecure-requests يوضع الكود في أعلى ملف .htaccess إذا كنت تقصد شيء أخر يمكن توضيح السؤال بشكل أكبر لو سمحت.
  22. ممكن إرفاق الكود الخاص بك ؟ لإضافة Firebase Cloud Messaging يجب إضافة مكتبة firebase_messaging: ^7.0.3 إلى ملف pupsbec.ymal في مشرعك تجد المكتبة هنا . ثم من firebase console تقوم بتحميل ملف google-service.json إلى مشروعك في مسار android\app, ثم إضافة classpath في ملف android/build.gradle dependencies { // Add the google services classpath classpath 'com.google.gms:google-services:4.3.2' } وفي ملف android/app\build.gradle تضع // ADD THIS AT THE BOTTOM apply plugin: 'com.google.gms.google-services' وفي ملف android/app/src/main/AndroidManifest.xml تضع <intent-filter> <action android:name="FLUTTER_NOTIFICATION_CLICK" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> ضمن activity tag. ومن ثم هنا تجد التوثيق الخاص بقوقل فايربيز لكيفية التعامل مع المكتبات بعد تضمينها في flutter هنا أو هنا يمكن النظر في الكود الخاص بك بعد إرفاقه.
  23. يمكنك باستخدام إطار العمل Laravel من تصميم إي موقع بعدة لغات, بحيث Laravel تقدم لك مجلد lang كامل لكي تضع فيه ملفات ترجمة اللغات في هذا المجلد. يمكنك في مسار المجلد الرئيسي ثم تختار مجلد resources ومن ثم مجلد lang ستجد في هذا المسار مجلد en وبداخله ملفات مثل: auth.php pagination.php passwords.php validation.php لو قمت بالدخول لهذه الملفات ستجد أنه يوجد في كل ملف array تحتوي على key, value بحيث key مفتاح الذي سيعبر عن القيمة value في اللغة فمثلاُ: <?php return [ 'failed' => 'These credentials do not match our records.', 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', 'users' => 'users', ]; ?> بحيث المفتاح failed قيمته وهي These credentials do not match our records. هذا للغة الأنجليزية, فماذا لو أردنا أن نعمل لغة عربية للموقع بكل سهولة سنذهب إلى مجلد lang ونقوم بإنشاء مجلد جديد باسم ar ونضع به الملفات المذكورة كما في مجلد en للغة الأنجليزية مع الإبقاء على المفاتيح و تغيير القيمة, فمثلاً <?php return [ 'failed' => 'أوراق الاعتماد هذه لا تتطابق مع سجلاتنا.', 'throttle' => 'محاولات تسجيل دخول كثيرة جدًا. يرجى المحاولة مرة أخرى في: ثواني.', 'users' => 'الأعضاء', ]; هكذا قمنا بإنشاء ملف auth.php ولكن بداخل مجلد ar في مجلد lang. ولكن لم ننتهي بعد الأن يجب علينا استخدام قيمة المفاتيح keys لأنها متشابهة في كل لغة مع الأختلاف بقيمة values فمثلا لو أردنا جلب المفتاح failed, سنقوم بالتالي: <p>{{ trans('auth.failed') }}</p> لو لاحظت جيداً اننا قمنا بكتابة الأقواس المعكوفة ثم دالة trans لجلب وطباعة القيمة حسب اللغة, دعنا نفصل أكثر هذا auth يعني اسم الملف , failed يعني المفتاح failed في ملف auth.php حسب كل لغة. ولكن الأن يجب علينا تحديد لغة الموقع الرئيسية من خلال ملف config.php داخل مجلد config في المجلد الرئيسي للمشروع عن طريق تغيير 'locale' => 'ar', او 'locale' => 'en', ويمكنك من وضع عنصر select باستخدام html لتغيير اللغة <select class="form-control changeLang"> <option value="en" {{ session()->get('locale') == 'en' ? 'selected' : '' }}>English</option> <option value="ar" {{ session()->get('locale') == 'ar' ? 'selected' : '' }}>Arabic</option> </select> وأيضا سنضع كود جافا سكربت للقيام بتغيير اللغة حسب route نحدده و نعمل تحديث للصفحة حسب اللغة المختارة مثل <script type="text/javascript"> var url = "{{ route('changeLang') }}"; $(".changeLang").change(function(){ window.location.href = url + "?lang="+ $(this).val(); }); </script> سيكون route في ملف web.php Route::get('lang/change', 'IndexController@change')->name('changeLang'); مع وضع في دالة index في ملف IndexController. public function index(Request $request) { App::setLocale($request->lang); session()->put('locale', $request->lang); return redirect()->back(); } يتم قلب ذلك باستخدام html وتغيير اتجاه الصفحة عن طريق <!DOCTYPE> <html lang="ar" dir="rtl"> <html lang="en" dir="ltr"> بحيث rtl - right to left, ltr - left to right. أو يمكن استخدام مكتبة بوتستراب. لا, الأغلب نفس التصميم مع قلب الأتجاهات إلا إذا كان الموقع يختلف بالواجهات من اللغة العربية إلى اللغة الأنجليزية.
  24. اسم قاعدة البيانات هو tc صحيح. واسم الجدول المخزن فيه الاستعلامات هو news كما ذكرت ولكن مع تغيير حقل image إلى حقل path لانك تخزن اسم الصورة في حقل path. ممكن تغيير اسم الملف bas.php إلى الملف نفسه الذي حفظت به هذا الكود, لأنه هذا الملف سوف يعيد الرفع من خلاله مرة أخرى, لأنه يحتوي على كود التخزين داخل قاعدة البيانات و أيضا يحتوي على كود الرفع إلى مجلد تخزين الصور. يعني إذا حفظ الملف باسم index.php يجب تغيير الملف في خاصية action إلى نفس اسم الملف. CREATE TABLE `news` ( `id` int(11) NOT NULL, `path` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
×
×
  • أضف...