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

بلال زيادة

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

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

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

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

    30

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

  1. الخطأ يخبرك أن حقل user_id لا يجب أن يكون فارغ , تأكدي من إسناد قيمة لهذا الحقل , أو قومي بإضافة هذا الحقل إلى مصفوفة fillable$ في ملف المودل protected $fillable = ['user_id']; يمكنك إسناد قيمة لهذا الحقل بهذا الطريقة $Role = Role::create([ 'name'=>'super', 'user_id => 1, ]); أو $Role = Role::create([ 'name'=>'super', 'user_id => $id, ]); أو إذا كنتي تقومين بإرسال البيانات عن طريق فورم $Role = Role::create([ 'name'=>'super', 'user_id => $request->user_id, ]);
  2. هناك عدة طرق منها , يمكنك إنشاء مسار Route::get('/search', 'GalleryController@search')->name('search'); بحيث يكون مسؤول عن عملية redirect , وتكون دالة search مهمتها جلب القيمة التي تم إرسالها بالفورم public function search(Request $request) { return redirect()->route('getData', $request->name); } طبعاً نعرف مسار آخر لعرض الرابط كما نريد http://127.0.0.1:8000/search/mobile وليكن المسار بهذا الشكل Route::get('/search/{name}', 'GalleryController@foundData')->name('getData'); وتكون دالة foundData هي دالة عرض بيانات عن طريق القيمة التي نبحث عنها public function foundData(Request $request, $name) { $books = Book::where('title', 'like', "%{$request->name}%")->paginate(12); $title = ' عرض نتائج البحث عن: ' . $request->name; return view('gallery', compact('books', 'title')); } ويكون form الإدخال بهذا الشكل <form class="form-inline col-md-6 justify-content-center" action="{{ route('search') }}" method="GET"> <input type="text" class="form-control mx-sm-3 mb-2" name="name"> <button type="submit" class="btn btn-secondary mb-2">ابحث</button> </form> بحيث يكون نوع الإرسال من نوع GET و رابط التوجيه هو {{ route('search') }} و حقل الإدخال يحمل خاصية name="name" <input type="text" class="form-control mx-sm-3 mb-2" name="name">
  3. هل يوجد لهذا العضو صلاحيات ؟ ربما لم تقومي بإعطاءه أي صلاحية , برجى أرفاق صورة من مجلد roles في قاعدة البيانات .
  4. لاحظ أن %USERPROFILE%\ معناها هو مجلد user profile على الجهاز و هو يقصد به مجلد تعريف المستخدم الخاص بك في مجلد المستخدمين على محرك نظام windows الخاص بك , والذي يكون على معظم أجهزة الكمبيوتر على القرص C فلاحظ عندما قمت بتنفيذ هذا الأمر في cmd cd %USERPROFILE%\ سيقوم بفتح المسار التالي C:\Users\Bilal> ماذا لو أردنا إنشاء مجلد في هذا المسار نقوم باستخدام الأمر التالي mkdir %USERPROFILE%\\TestFolder فسيقوم بإنشاء مجلد باسم TestFolder في المسار التالي على الحاسوب C:\Users\Bilal> عندما كنت تستخدم الأمرين mkdir projects > cd projects لاحظ انه عندما تقوم بفتح cmd تلقائياً يكون المسار الموضوع هو مسار مجلد تعريف المستخدم
  5. هل تحققت من Console و شاهدت ما هي الأخطاء التي تواجهك, أرجوا إرفاق نص المشكلة أو صورة للمشكلة عن طريق Console.
  6. هنا لدينا وسم select لأختيار أكثر من خيار نريد تخزينه, <select class="form-control select2" name="permissions[]" id="permissions" multiple required> </select> عرفنا ذلك عنا طريقة إعطاء الوسم select خاصية multiple, أي يعني في هذا الكود نود إعطاء المستخدم أكثر من صلاحية محددة نقوم باختيارها , يعني هذا اننا نريد إضافة مصفوفة من الخيارات فتم وضع [] بجانب permissions , name="permissions[]" ثم قمنا بعمل loop على جميع الصلاحيات المخزنة لدينا في قاعدة البيانات و عرضها داخل قائمة select باستخدام وسم option مع وضع id كل صلاحية في الخاصية value للوسم option , @foreach($permissions as $id => $permissions) <option value="{{ $id }}" {{ in_array($id, old('permissions', [])) ? 'selected' : '' }}>{{ $permissions }}</option> @endforeach ثم قمنا بالتحقق عبر دالة in_array هل يوجد id الصلاحية في المصفوفة permissions , إذا كان يوجد نقوم بتحديد هذه الصلاحية من ضمن قائمة الصلاحيات التي يتم عرضها للمستخدم, {{ in_array($id, old('permissions', [])) ? 'selected' : '' }} يمكنك مراجعة وسم select أولاً لتفهم إلية عمل الكود كاملاً من هنا
  7. حاول إزالة الأسطر التالية (function() { 'use strict'; }); و الأقواس المعكوفة الخاصة بها و محاولة تنفيذ الكود مرة أخرى.
  8. يمكنك استخدام Google reCapatcha بحيث يمكنك تضمين مكتبة api.js <script src="https://www.google.com/recaptcha/api.js"></script> ثم يمكنك إنشاء وظيفة رد الاتصال callback للتعامل مع التوكن token <script> function onSubmit(token) { document.getElementById("MyForm").submit(); } </script> ثم في زر الإرسال الخاص بالفورم يمكنك وضع الخصائص التالية class="g-recaptcha" data-sitekey="reCAPTCHA_site_key"data-callback='onSubmit' data-action='submit' مثل <button class="g-recaptcha" data-sitekey="reCAPTCHA_site_key"data-callback='onSubmit' data-action='submit'>Submit</button> يمكنك من هنا قراءة كافة التعليمات للتعامل مع Google reCapatcha.
  9. هناك فكرة بسيطة و هي class لكل زر فمن الممكن إعطاء كل زر class معين بهذا الشكل <button class="btn btn-success center-submit m7md1 size19 updateData" type="update">تحديث البيانات</button> <button class="btn btn-danger center-submit m7md1 size19 addData" type="submit">إضافة كجديد</button> و من ثم التعديل على الزر الخاص بالتحديث للبيانات بإضافة خاصية data-id ويتم وضع id البوست أو التعليق الذي نود تحديث بياناته بهذا الشكل <button class="btn btn-success center-submit m7md1 size19 updateData" data-id="1" type="update">تحديث البيانات</button> أو <button class="btn btn-success center-submit m7md1 size19 updateData" data-id="<?=$comment->id;?>" type="update">تحديث البيانات</button> ومن ثم عند الضغط على زر تحديث نقوم بالتأكد من الزر المضغوط عليه في jQuery بهذا الشكل $(document).on('click', '.updateData', function(){ }); ومن ثم بداخل أقوام function في الكود السابق نقوم بجلب id المنشور أو التعليق $(document).on('click', '.updateData', function(){ var id = $(this).data('id'); }); ومن ثم نقوم بوضع باقي الكود الذي يقوم بتنفيذ التحديثات على المنشور أو التعليق $(document).on('click', '.updateData', function(){ var id = $(this).data('id'); /// هنا باقي الكود });
  10. يمكنك جلب ip الزائر باستخدام الدالة التالية function getClientIP( ) { $ip = ""; if ( isset( $_SERVER['REMOTE_ADDR'] ) ) { $ip = $_SERVER['REMOTE_ADDR']; } else if ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } else if ( isset( $_SERVER['HTTP_CLIENT_IP'] ) ) { $ip = $_SERVER['HTTP_CLIENT_IP']; } return $ip; } بحيث تقوم باستدعاء الدالة getClientIP في الكود الخاص بك , لتتمكن من مقارنة ip كل زائر ومنع تكرار عملية المشاهدة أكثر من مرة . ربما تكون طريقة الاعتماد على ip الزائر هي أفضل وسيلة , حيث يضا يتم الاعتماد على ip الزائر في نظام التصويت و قد أبدت فعالية كبيرة هذه الطريقة.
  11. يمكنك جلب محتويات المجلد عن طريق حزم directory-tree إذا اردت الاستغناء عن استخدام path.dirname(__filename) حيث يمكنك تنزيل المكتبة باستخدام الأمر التالي npm install directory-tree ثم يمكنك كتابة الكود التالي const directory = require('directory-tree'); const files = dirTree('./files/'); console.log(files);
  12. يمكنك إضافة الحزمة إلى devDependencies بشكلٍ يدوي, قم بفتح ملف package.json و الذهاب إلى devDependencies ويمكنك إضافة أي حزمة , على سبيل المثال "devDependencies": { "@fortawesome/fontawesome-free": "^5.15.1", "@laylazi/bootstrap-rtl": "^4.5.3-1", "@laylazi/bootstrap-rtl-scss": "^4.5.3-1", "bootstrap": "^4.5.3", "jquery": "^3.5.1", "popper.js": "^1.16.1", }, ومن ثم تشغيل الأمر التالي npm install أو الأمر التالي npm update
  13. إذا كان لديك نظام التشغيل linux فيمكنك تحديث nodejs من خلال هذه الخطوات يجب تحديث مستودع الحزم من خلال الأمر التالي sudo apt update قم بتثبيت NVM من خلال الأمر curl : curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash أو يمكنك استخدام wget و تشغيل الأمر التالي wget -q0- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash ثم اغلق terminal و أعد فتحه حتى يتعرف النظام على التغييرات أو قم بتشغيل الأمر التالي source ~/.bashrc ثم تأكد من أن VNM تم تثبيتها بنجاح من خلال الأمر التالي nvm --version ثم قم بمحو الكاش من خلال الأمر التالي npm cache clean -f ثم قم بتنزيل node.js من خلال الأمر التالي npm install -g n لتحديث nodejs يمكنك الأنتقال إلى الموقع الرسمي لِ nodejs حيث يمكنك العثور على جميع الحزم المتاحة , يمكنك تنزيل الكود المصدري أو المثبت المدمج مسبقاً لإصدارات LTS أو أحدث إصدار. يمكنك إما تنزيل الحزمة من متصقح أو العثور على رقم الإصدار الذي تريده و إضافته إلى أمر wget على سبيل المثال get https://nodejs.org/dist/v14.17.0/node-v14.17.0-linux-x64-tar.xz قم بتثبيت xz-untils المستخدمة لاستخراج الحزم sudo apt-get install xz-untils ثم استخرج الحزمة و قم بتثبيتها عن طريق الأمر التالي , على سبيل المثال tar -C /use/local --strip-components 1 -xJf node-v14.17.0-linux-x64.tar.xz
  14. يمكنك إنشاء الزرين باستخدام جافاسكريبت باستخدام دالة document.createElement('a'); بهذا الشكل // إنشاء الزرين var btnOne = document.createElement('a'); var btnTwo = document.createElement('a'); ثم نقوم بإضافة عنوان لكل زر باستخدام دالة var linkOne = document.createTextNode("الزر الأول"); var linkOne = document.createTextNode("الزر الأول"); ثم نقوم بإضافة العنوان لكل زر بهذا الشكل btnOne.appendChild(linkOne); btnTwo.appendChild(linkTwo); ثم نقوم بوضع خاصية href لكل عنصر بهذا الشكل btnOne.href = "page1.html"; btnTwo.href = "page2.html"; ثم نقوم بإضافة الزرين إلى الصفحة document.body.appendChild(btnOne); document.body.appendChild(btnTwo);
  15. تحتاج يدوياً إلى تثبيت وحدات المستوى الأعلى , التي تحتوي على التبعيات npm install findup-sync@0.1.2 أو قم بإزالة مجلد node_modules باستخدام الأمر التالي rm -rf node_modeules/ ثم تشغيل الأمر التالي لتنظيف الكاش npm cache clean ثم أعد استخدام الأمر التالي npm install
  16. يمكنك استخدام mongoose.createConnection(); وبالتالي يمكنك وضع كل اتصال بمتغير بهذا الشكل const connectionOne = mongoose.createConnection("الاتصال بالسيرفر الأول"); const connectionTwo = mongoose.createConnection("الاتصال بالسيرفر الثاني");
  17. يمكنك تعليم ميزة الحجز للغرفة باستخدام حقل يحتمل true أو false أو قيمة 0 غير محجوز 1 محجوز , فيمكنك وضع حقل وليكن باسم `isOrdered` int(20) DEFAULT 0, وعند انشاء استعلام حجز الغرفة تقوم بوضع قيمة هذا الحقل لهذه الغرفة بقيمة 1 $sql = "insert into rooms(`room`, `isOrdered`) VALUES ('$room', 1); هذه هي الطريقة المتبعة بحيث تسهل عليك عمليات البحث و تمييز الغرف المحجوزة و الغير محجوزة.
  18. يمكنك فعل ذلك عبر تشفير النص باستخدام أكثر من دالة مثل md5 و sha1 ويمكنك ذلك بهذا الشكل <?php $string = "hsoub"; echo md5(md5(sha1($string))); ?> a105d279506e2b29e7ed66e00818ab6c فتكون نتيجة هذه الدوال نص مشفر بأكثر من دالة مما يصعب فك تشفيره.
  19. يتم إنشاء الإعدادات المحلية المفقودة باستخدام لغة locale-gen, يمكن ضبط الإعدادات المحلية (إلى en_US.UTF-8) على النحو التالي: export LANGUAGE=en_US.UTF-8 export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 locale-gen en_US.UTF-8 dpkg-reconfigure locales
  20. يمكنك استخدام دالة md5 لتشفير كلمات المرور مثل $password = "123"; echo md5($password); ايضا يمكنك استخدام الدالة md5 في تشفير النصوص بهذا الشكل $string = "Hello" ; echo md5($string); ايضا يمكنك استخدام base64_encode في تشفير النصوص بهذا الشكل $string = "Hello" ; echo base64_encode($string);
  21. يمكنك استخدام Route Class بهذا الشكل retrun Illuminate\Routing\Router::toResponse($request, $response); أو يمكنك استخدام Facade بهذا الشكل return Route::toReqponse($request, $response); هذا مثال محدد لِ Octane Octane::route('GET', '/url', function($request) { return Route::toResponse($request, view('')); }); باستخدام هذا الأسلوب بإعادة أي شيء مثل array, model, string, redirect. إذا كنت تريد عرض معين فيمكنك استخدام use Illuminate\Http\Response; Octane::route('GET', '/url', function() { return new Response(view('')); });
  22. lumen هي نسخة مجردة من laravel و lumen لا يحتوي على جميع مميزات laravel و ايضا هناك خصائص غير موجودة على الإطلاق, ومن المهم عند تحويل مشروع الأخذ بعين الأعتبار : يجب ترحيل تعريفات المسار لأن Lumen يستخدم موجهًا مختلفًا لا يستخدم lumen ملف env. لذلك قد تلجأ إلى فك تعليق السطر التالي Dotenv::load() في ملف bootstrap\app.php لا يتم ايضا تمكين الواجهات مثل DB, Mail, Queue ولتفعيلها يجب إزالة التعليق عن السطر التالي $app->withFacades(); في ملف bootstrap\app.php ايضا يجب عليك تفعيل Eloquent من خلال إزالة التعليق عن السطر التالي $app->withEloquent(); في ملف bootstrap\app.php
  23. في بيئة العمل المحلية الخاصة بك , يجب التحقق من ملف composer.json و التحقق من أي عنصر في require يجب أن يكون ضمن require-dev و قم بنقله . ثم أحذف ملف composer.lock و من ثم إعادة التحديث composer update -vvv ومن ثم قم بأختبار مشروعك محلياً , وإذا كل شيء يعمل يمكنك نقل composer.lock الخاص بك إلى نظام التحكم في الإصدار الخاص بك وإعادة نشر التطبيق على Forge
  24. ربما يجب عليك تحديث نسخة laravel lumen التي تعمل عليها و التأكد مرة أخرى من المشكلة , أو يمكنك إنشاء Mail Provider جديد ليتم استعماله بدلاً من Provider الأقتراضي في المسار التالي app\Providers وليكن باسم MailServiceProvider.php <?php namespace App\Providers; use Illuminate\Mail\Mailer; use Illuminate\Mail\MailServiceProvider as BaseProvider; class MailServiceProvider extends BaseProvider { protected function registerIlluminateMailer() { $this->app->singleton('mailer', function ($app) { $config = $app->make('config')->get('mail'); $mailer = new Mailer( $app['view'], $app['swift.mailer'], $app['events'] ); $mailer->setQueue($app['queue']); foreach (['from', 'reply_to', 'to'] as $type) { $this->setGlobalAddress($mailer, $config, $type); } return $mailer; }); $this->app->configure('mail'); $this->app->alias('mailer', \Illuminate\Contracts\Mail\Mailer::class); } } ثم عليك بتسجيل هذه Provider في ملف app.php الموجود بداخل مجلد bootstrap عن طريق إضافة السطر التالي $app->register('\App\Providers\MailServiceProvider::class');
  25. تحتاج إلى إضافة OpenSSL إلى جهازك عن طريق تحميل نسخة الويندوز من هنا , ثم قم بإضافة مسار مجلد bin الذي يوجد داخل مسار البرنامج الذي قمت بتثبيته قد يكون باسم openssl-ثم رقم الإصدار , قم بإضافته إلى متغيرات البيئة, إذا كنت تقصد تفعيل openssl في php , يمكنك فتح ملف php.ini و البحث عن extension=php_openssl.dll ثم إزالة الفاصلة المنقوطة من بدايتها.
×
×
  • أضف...