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

Amir Alsaeed

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

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

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

كل منشورات العضو Amir Alsaeed

  1. لدي مشروع لارافيل وواجهة المستخدم مبنية من خلال Vue JS. يتم التحقق من المستخدمين عن طريق passport في لارافيل من جهة الخادم. ولدي أنماط مختلفة من المستخدمين وكل نمط له صلاحيات مختلفة Passport::tokensCan([ 'user' => 'User', 'customer' => 'Customer', 'admin' => 'Admin', ]); كيف يمكنني تطبيق ذلك من خلال passport scope وإضافة صلاحيات مختلفة لكل نوع من المستخدمين؟ وهل roles مختلفة هنا عن scopes؟
  2. لقد قرأت ضرورة استخدام DB::transaction عند وجود أكثر من عملية إدخال إلى قاعدة البيانات. ولكن في هذه الحالة هل يجب أن أضع try و catch بداخلها؟ أم العكس أي أقوم بوضع transaction وعمليات الإدخال بداخل try ؟ مثل التالي: try { DB::transaction(function() { ...... }); if(is_null($exception)) { return true; } else { throw new Exception; } } catch(Exception $e) { return false; } أيهما أفضل ويتم استخدامه في هذه الحالة؟
  3. لدي تاريخين في جدول ضمن قاعدة البيانات: created_at وهو الافتراضي من قبل لارافيل، وعمود آخر last_visit قمت أنا بإضافته على الجدول. وإن القيمة الافتراضية للحقلين هي 0000-00-00 00:00:00 عندما أقوم بطباعة نوع البيانات في الحقل الأول last_visit: var_dump(last_visit) يظهر لي النوع String، أما طباعة نوع الحقل created_at تظهر object/Carbon فكيف يمكنني مقارنة التاريخين ضمن هذه الحقول؟ بما أن كل حقل له نمط مختلف؟
  4. أقوم باستخدام Homestead في لارافيل وحاولت تنفيذ الأمر التالي في Laravel mix: npm run dev ولكن يظهر لي الخطأ التالي: > @ dev C:\websites\pro > cross-env NODE_ENV=development webpack --progress --hide-modules -- config=node_modules/laravel-mix/setup/webpack.config.js 'cross-env' is not recognized as an internal or external command, operable program or batch file. npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! @ dev: `cross-env NODE_ENV=development webpack --progress --hide- modules --config=node_modules/laravel-mix/setup/webpack.config.js` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the @ dev script. كيف يمكنني حل هذه المشكلة؟
  5. لدي الكود التالي الخاص بالتنقّل بين صفحات المشروع: @if(Auth::guest()) <li><a href="{{ url('/login') }}">Log In</a></li> <li><a href="{{ url('/register') }}">Sign Up</a></li> @else <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">{{ Auth::user()->username }}</a> <ul class="dropdown-menu"> <li><a href="{{ route('user.profile') }}">Profile</a></li> <li><a href="{{ url('/logout') }}">Log Out</a></li> </ul> </li> @endif ولكن عند الضغط على زر profile يظهر لي الخطأ التالي: Missing required parameters for [Route: user.profile] [URI: user/{username}/profile]. فيبدو أنه لدي مشكلة في {{ route('user.profile') }} وهذا هو الكود الخاص في مسارات التوجيه: Route::group(['middleware' => 'web'], function () { Route::auth(); Route::get('/', ['as' => 'home', 'uses' => 'MainController@index']); Route::group(['namespace' => 'User', 'prefix' => 'user'], function(){ Route::get('{username}/profile', ['as' => 'user.profile', 'uses' => 'ProfileController@index']); }); }); كيف أستطيع حل هذا الخطأ؟
  6. لقد قمت بتنفيذ الخطوات التاليو لأقوم بحذف مكتبة أو package في مشروع لارافيل: لقد قمت بحذف تعريف اسم المكتبة من ملف composer.json ضمن قسم require، ثم جميع الصفوف التي تنتمي لهذه المكتبة ضمن الملف app.php ثم قمت بتنفيذ الامر: composer update وبعدها قمت بتنفيذ الأمر: composer dump-autoload ولكن لم يتم حذف ال package وعادت إلى المشروع. هل يوجد خطوات إضافية يجب أن أقوم بها؟
  7. لدي جدولين في قاعدة البيانات Department و User. وقمت بإنشاء scope ضمن مودل المستخدم user اسمه available والتابع بداخله scopeAvailable. وأحاول الحصول على جميع الأقسام department التي تحوي هذا السكوب كالتالي: $departments = Department::with('user')->available()->get(); ولكن أحصل على الخطأ التالي: Call to undefined method published() وهذا هو الكود الخاص بالأقسام: class Department extends \Eloquent { public function departments() { return $this->HasMany('User'); } } والكود الخاص بالمستخدمين: class User extends \Eloquent { public function department() { return $this->belongsTo('Department'); } public function scopeAvailable($query) { return $query->where('available', 1); } } كيف يمكنني حل هذه المشكلة؟
  8. لدي بنية هرمية في قاعدة البيانات لمشروعي، بحيث يكون لكل حساب مستخدم حساب أب أو حساب ابن بشكل بنية هرمية متعددة المستويات. فقمت بإنشاء المودل بالشكل التالي: public function immediateChildAccounts() { return $this->hasMany('Account', 'acount_parent', 'act_id'); } public function parentAccount() { return $this->belongsTo('Account', 'acount_parent', 'act_id'); } وعندما أريد استعادة جميع سجلات الحسابات الأبناء لحساب معيّن أقوم بالتالي: public function allChildAccounts() { $childAccounts = $this->immediateChildAccounts; if (empty($childAccounts)) return $childAccounts; foreach ($childAccounts as $child) { $child->load('immediateChildAccounts'); $childAccounts = $childAccounts->merge($child->allChildAccounts()); } return $childAccounts; } ولكن مع ازدياد حجم البيانات لا أعلم إن كانت هذه الطريقة فعّالة في التعامل مع البنية الهرمية في لارافيل، حيث سأقوم بالمستقبل باستعادة جميع الحسابات الأبناء لحساب معيّن وأيضاً جميع أبنائهم وهكذا. كالتالي: A->immediateChildAccounts() --> يجب أن أحصل على {B, C} A->allChildAccounts() --> يجب أن أحصل على {B, D, C, E, F} كما وأرغب أيضاً في استعادة جميع الحسابات التي ليس لها أبناء متصلة. ما هي الطريقة الأفضل لمعالجة هذه الأمور؟
  9. لقد قمت بإضافة مشروع جديد على بيئة التطوير wamp ولكن الصفحات لا تتعرف على التنسيقات الموجودة في ملف ال css. هذا هو الربط مع ملف التنسيقات: <link href="/css/main.css" rel="stylesheet"> ويوجد ملف htaccess ضمن المشروع يحوي السطر التالي: RewriteBase /laravel-newproject/public/ وفي ملف app.php: 'url' => 'http://localhost:9000/laravel-newproject/public/', وحتى الصور في بعض الصفحات لا تظهر. ما المشكلة في ذلك؟
  10. لدي موقع الكتروني محمي بتسجيل الدخول من قبل الأعضاء فقط، أي لا يمكن تصفح محتويات الموقع إلا بعد أن يقوم المستخدم بتسجيل الدخول للموقع. ولكن الصور تبقى مفتوحة للجميع حتى للمستخدمين الذين لم يقوموا بتسجيل الدخول. فأي مستخدم يقوم بكتابة رابط الصورة في شريط العنوان يستطيع أن يستعرضها دون أي حماية: http://www.mywebsite.com/images/users/profileImage.jpg فهل يوجد طريقة تمكنني من حماية الصور؟ بحيث لا يستطيع أي مستخدم أن يستعرض الصور الموجودة في الموقع إلا بعد تسجيل الدخول؟
  11. أحاول طباعة سجل الاستعلامات المنفّذة على قاعدة البيانات في لارافيل ولكن لا تظهر أي نتيجة. فالتابع DB::getQueryLog() يعيد مصفوفة فارغة: $books = Book::find(5); print_r(DB::getQueryLog()); والنتيجة تظهر بهذا الشكل: Array ( ) كيف يمكنني حل المشكلة؟
  12. أستخدم Angular مع لارافيل ولكن ظهرت مشكلة في تحويل المسارات ضمن واجهات التطبيق، فعند تعريف مسار محدد بالشكل: $routeProvider.when('/image/:imageId', { controller: 'imagePageController', templateUrl: 'views/image.html' }); وباستخدام الوسم a: <a href="/#/images/{{image.id}}">Show Image</a> يتم تحويل العلامات " / " الموجودة في المسار إلى القيمة "%2F" فيصبح الرابط على الشكل التالي: http://localhost:8000/#%2Fimage%2F1 ولا يتم الحصول على القيم أو الواجهات بالشكل الصحيح. حاولت استخدام ng-href بدلاً من الوسم a ولكن بقيت نفس المشكلة. كيف يمكنني حل هذه المشكلة؟
  13. كيف يمكنني التحقق من عناصر مصفوفة عند الإدخال في لارافيل؟ لقد قمت بقراءة التوثيق ووضعت علامة النجمة ضمن التحقق كالتالي: $validator = Validator::make($request->all(), [ "attributes.*" => 'required|distinct|min:3', ]); ولكن عندما وضعت هذا الشرط ضمن المتحكّم: if ($validator->fails()) { ..... } وقمت بتمرير مصفوفة attributes فارغة لم يتم تنفيذ الكود داخل الشرط أي أن الشرط أعاد القيمة false وبالتالي تم التحقق بنجاح. ما الخطأ هنا؟
  14. أعلم أنه لدينا التوابع الأساسية التالية عند إنشاء resource في لارافيل: (index, create, store, edit, update, destroy) ولكن هل يمكنني إضافة دوال أو توابع أخرى غيرها؟ وكيف يمكنني إجراء ذلك وتحويل المسارات إلى نفس المصدر؟
  15. لقد قمت بإنشاء حلقة للمرور على التعليقات المكتوبة من قبل مستخدم على كتاب معيّن: foreach($book->student->comments as $comment) { echo "<li>" . $comment->title . " (" . $comment->book->id . ")</li>"; } ولكن تمت الطباعة بشكل غير مرتب فكانت النتيجة كالتالي: This book is good (3) Test comment(2) New Test Comment (4) كيف يمكنني إضافة الترتيب على الحلقة لطباعة التعليقات بشكل مرتب 2 ثم 3 ثم 4 ؟
  16. لدي جدول للموظفين في قاعدة البيانات بهذا الشكل: id department_id amount created_at 1 10 100 2017-06-01 00:00:00 2 15 250 2017-06-01 00:00:00 .... 154 10 43500 2017-12-24 00:00:00 255 15 4000 2017-12-24 00:00:00 وأريد إجراء استعلام بحيث يعيد لي السجلات مرتبة ترتيب تنازلي حسب عمود created_at ولكن لكل قسم، فلقد حاولت إجراء الاستعلام التالي: $date = Deps::where('department_id', '=', 15) ->orderBy('created_at', 'DESC') ->first(); واستطيع استعادة سجل واحد من الجدول حسب ترتيب التاريخ، ولكن كيف يمكنني استعادة السجلات التي لها رقم قسم مختلف ومرتبة ترتيب تنازلي حسب التاريخ ويتم أخذ أول تاريخ فقط من هذا الترتيب؟
  17. أرغب بإضافة زر على واجهة المستخدم تمكّنه من تحميل ملف معيّن دون إعادة التوجيه إلى أي واجهة أخرى. حاولت إضافة رابط ضمن الواجهة: <a href="/download">ابدأ التحميل</a> وقمت بربط المسار مع المتحكم الخاص بالتحميل: Route::get('/download', 'MainController@download'); وضمن المتحكم قمت بكتابة الكود التالي: public function download(){ $file="./download/testfile.pdf"; return Response::download($file); } ولكن عند الضغط على الزر يظهر الخطأ التالي: The file "/public/download/testfile.pdf" does not exist كيف أستطيع حل هذه المشكلة؟
  18. لا أستطيع فهم الفرق بين التابع الذي يحوي قوسين وبين الإشارة للعلاقة بشكل مباشر. فبكلا الحالتنين أحصل على نتيجة مشابهة: $clients = $store->clients(); $clients = $store->clients; $clients = $store->clients()->get(); $clients = $store->clients->get(); أريد الحصول على قائمة الزبائن لمتجر معين بعلاقة متعددة many to many ومن بعدها الدمج مع مجموعة العناصر الموجودة وحاولت إجراء حلقة على الزبائن بهذا الشكل: foreach ($clients as $client) { $available_items = array_merge($client->items(), $available_items); } ولك ما الفرق بين استخدام الأقواس ضمن التوابع أو العلاقات؟ وماذا يجب أن استخدم في هذه الحالة؟
  19. لدي قاعدة بيانات فيها جدولين مرتبطين ببعضهم بعلاقة One-to-Many. وأرغب عند الإضافة على جدول منهم التحقق من السجلات الموافقة لكي أقوم إما بإضافة سجل جديد على قاعدة البيانات أو تحديث السجل الموجود حالياً في حال كان موجوداً. لدي المودل التالي: public function option() { return $this->hasOne('Marks', 'marks_student_id'); } public function setOptionArrayAttribute($values) { $this->option->update($values); } مثال للكود الذي أرغب بتحقيقه: $model =Student::find($id); if (Input::has('marks')) { if (<في حال كان السجل المقابل غير موجود أقوم بإضافة سجل جديد>) { $option = new Marks(Input::get('option')); $option->student()->associate($model); $option->save(); $model->fill(Input::except('option'); } else { $model->update(Input::all()); } };
  20. أحاول إضافة أكثر من لغة على موقعي المبني بلارافيل، ولقد قمت بإضافة مسارات لكل لغة: / /[about] /[contact] /ar /ar/[about] /ar/[contact] /en /en/[about] /en/[contact] حيث سيتم ترجمة الصفحة [ ] حسب اللغة المختارة من قبل المستخدم في الواجهة. فمثلاً ستكون about في اللغة الانكليزية و [من-نحن] في العربية. ولكن من الصعب فعل ذلك على كامل الصفحات أو حتى في حال كان لدي عدد أكبر من اللغات، هل يوجد طريقة أفضل لوضع عدة لغات في لارافيل؟ لأن هدفي أيضاً ترجمة المسارات وليس فقط الصفحات.
  21. لدي موقع الكتروني في لارافيل وكان يعمل بشكل سليم، ولكن قمت بإجراء تحديث على نظام التشغيل Ubuntu ومن ضمن التحديثات Apache و PHP، والآن عند الدخول للموقع تظهر صفحة بيضاء أحياناً أو يظهر لي الخطأ: Error 403 Forbidden وهذا هو ملف htaccess الخاص بالموقع، مع العلم أنه لم يتم إجراء أي تغيير عليه أو على ملفات المشروع: <IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews </IfModule> RewriteEngine On RewriteRule ^(.*)/$ /$1 [L,R=301] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] ما هي المشكلة؟
  22. أريد رفع المشروع إلى خادم الويب الفعلي، ولكن أرغب بتغيير المسار public/index.php وأقوم بوضعه في مكان آخر، في المجلّد الجذر ضمن النطاق. لدي ملف .htaccess التالي: <IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews </IfModule> RewriteEngine On # Redirect Trailing Slashes. RewriteRule ^(.*)/$ /$1 [L,R=301] # Handle Front Controller. RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php[L] وضمن الملف app.php لدي url الافتراضي: 'url' => 'http://localhost' فكيف يمكنني تنفيذ ذلك وتجنّب الأخطاء؟
  23. أحاول الاتصال مع قاعدة بيانات من نوع PostgreSQL في لارافيل لإجراء التهجير على البيانات. ولكنه لا يتم التعرف على القاعدة ويأخذ اسم قاعدة البيانات من Mysql بدلاً منها. لقد قمت بإضافة الاتصال ضمن database.php: 'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'database', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), 'pgsql' => array( 'driver' => 'pgsql', 'host' => 'localhost', 'database' => 'testdb', 'username' => 'user123', 'password' => '', 'charset' => 'utf8', 'prefix' => '', 'schema' => 'public', ), وقد حاولت حذف الاتصال التابع لMysql لتجنب هذه المشكلة ولكن يظهر لدي الخطأ التالي: [InvalidArgumentException] Database [mysql] not configured. فما هي المشكلة هنا؟ لماذا لا يتم التعرّف على الاتصال مع pgsql؟
  24. أحاول تسجيل الدخول عن طريق form في لارافيل وبعد الضغط على زر تسجيل الدخول (submit) يظهر لدي الخطأ التالي: The page has expired due to inactivity. Please refresh and try again. ولكنني قمت بإضافة CSRF token ضمن الفورم: <form class="form-horizontal registration-form" novalidate method="POST" action="{{ route('register') }}"> {{ csrf_field() }} </form> كيف يمكنني حل هذه المشكلة؟
  25. أقوم بإدخال مجموعة من السجلات دفعة واحدة إلى قاعدة البيانات mysql في لارافيل. ولكن يظهر لدي الخطأ التالي: SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters. ماهو هذا الخطأ؟ وكيف يمكنني حل المشكلة؟
×
×
  • أضف...