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

Amir Alsaeed

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

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

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

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

  1. ثمت بإنشاء middleware التالي للتحكم بلغات الموقع: public function handle($request, Closure $next) { if(Session::has('locale')) { $locale = Session::get('locale',Config::set('app.locale')); } else { $locale = "ar"; } App::setLocale($locale); return $next($request); } والمتحكم الذي يقوم بتغيير اللغة: public function changeLang(Request $request,$lang) { if (!empty($request)) { Session::put('locale',$lang); } else { Session::set('locale',$lang); } return back(); } والمسار لذلك: Route::get('/{lang}','LanguageController@changeLang'); ولكن عند توجيه المسارات إلى لغة معيّنة لا يتم تغيير الغة. وأيضاً ماهي الطريقة لتغيير إلى أكثر من لغة من جهة المستخدم؟
  2. أحاول استخدام مكتبة socialite لتسجيل الدخول عن طريق الفيسبوك، ولكن أحصل على هذا الخطأ: BindingResolutionsException Target[Laravel\Socialite\Contracts\Factory] is not instantiable وهذا هو المتحكم الذي أقوم باستخدامه: namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\Http\Controllers\Controller; use Laravel\Socialite\Facades\Socialite; class SocialAuthController extends Controller { public function redirect() { return Socialite::driver('facebook')->redirect(); } public function callback() { }
  3. لدي صف اسمه Cart وفيه تابع للشراء purchase، سيحتوي هذا الصف أيضاً هيكل التطبيق والتوابع الأخرى التي ستعتمد عليها معظم وحدات التحكم Controllers الخاصة بي. كيف يمكنني أن استخدم dependency injection بين وحدات التحكم الأخرى؟ أو بمعنى آخر كيف يمكنني إضافة Laravel Contracts مع استخدام Service providers أيضاً في لارافيل؟
  4. أقوم باستخدام job processing و job processed و job failed لمعرفة حالات الوظائف في لارافيل ورؤية حالة جدول queue log table. ولكن أيضاً أحتاج معرفة الحالات الإضافية مثل عند إدخال عمل ما إلى الرتل، فعند استخدامي للتابع: \Redis::lrange('queues:mws', 0, -1) يمكنني رؤية متغيّر اسمه pushedAt ولكن لا أعلم كيف يمكنني الوصول إليه أو التحكم به
  5. لدي API مبنية بواسطة لارافيل وتتصل مع تطبيق Angular موجود على اسم نطاق وخادم ويب مختلف. أحاول استخدام Sanctum للتحقق من الطلبات المستقبلة من Angular ولكنها لا تحوي CSRF Token ولذلك احصل على الخطأ: CSRF token mismatch error حاولت إرسال طلب التحقق من المستخدم للخادم كالتالي: this.http.get('sanctum/csrf-cookie') .pipe( switchMap(result => this.http.post('auth/login', {'email': email, 'password': password})) ); ولكن لم تعالج المشكلة
  6. أحاول تطوير نسخة مشروع مبني باستخدام Laravel و Vue JS إلى لارافيل 8، ولكن عند تنفيذ: npm run dev يظهر لدي هذا الخطأ: app.js:44258 Uncaught ReferenceError: route is not defined حاولت تتبع الخطأ فلاحظت وجود خط أحمر على السطر التالي: Vue.mixin({ methods: { route } }); ولكن لم استطع تحديد المشكلة أو كيفية حلها
  7. أحاول استخدام Fortify في لارافيل. ولكن لاحظت بأن المسارات الافتراضية التي يتم تهيئتها ضمن ملفات المكتبة موجودة في الملف: /vendor/laravel/fortify/routes/routes.php وهي مختلفة عن ملفات المسارات الموجوجة افتراضياً في التطبيق (web و api) فهل يجب علي التعديل على الملف السابق لإضافة أو تعديل مسارات ضمن المشروع؟
  8. عند محاولتي لنقل المشروع Laravel إلى خادم خاص وأثناء تثبيت الملفات والمكتبات ضمن لارافيل يظهر لي هذا الخطأ: Cannot create cache directory /home/amir123/.composer/cache/repo/mynewwebsite.org/, or directory is not writable. Proceeding without cache. وبعدها يستمر بتحميل المكتبات. فما معنى هذا الخطأ وهل سيسبب مشكلة في المشروع فيما بعد؟
  9. لدي تطبيق قمت ببنائه باستخدام React و Laravel وأقوم باستعمال websockets ضمن لارافيل. ولكن بعد تهئية الاتصال في websockets ومحاولة تشغيله عن طريق هذا الأمر: php artisan websockets:serve يظهر لدي الخطأ هذا الخطأ مباشرةً: Whoops\Exception\ErrorException : Class BeyondCode\LaravelWebSockets\Statistics\DnsResolver may not inherit from final class (React\Dns\Resolver\Resolver)
  10. لدي تطبيق لارافيل ضمن حاوية باستخدام docker. والتطبيق يقوم باستخدام Laravel Websockets، كيف يمكن تشغيل websockets أوتوماتيكياً عند تشغيل الحافظة في docker؟ فعند القيام باستخدام المنفذ الافتراضي ضمن الحاوية لا يتم الاتصال. هذا هو كود التعريف الحالي في ملف supervisord-app.conf: [program:websockets] command=/usr/bin/php /var/www/html/websocket-service/artisan websockets:serve numprocs=1 autostart=true autorestart=true user=www-data-new
  11. أقوم باستخدام Broadcast في لارافيل مع pusher للتعامل مع اتصالات من جهتين (ويب و api). كيف يمكن إجراء أكثر من تحقق authentication للصفحات التي يتم فيها الاتصال مع pusher؟ ففي حال تمّت زيارة الصفحة من الويب أو من API يتم التحقق من نفس الشرط أو guard. Broadcast::routes(['middleware' => 'web']); Broadcast::routes(['middleware' => 'auth:api']); ولكن الدمج نفس الروت لا يعمل
  12. لقد قمت بإنشاء رتل queue لإرسال كمية كبيرة من الرسائل الالكترونية للمستخدمين وقمت بتشغيل التطبيق على استضافة مشتركة عن طريق cron بالأمر التالي: php artisan queue:work يتم تنفيذ الأمر وإرسال الرسائل ولكن بعدها أحصل على هذا الخطأ وتتوقف العملية عن التكرار: [ErrorException] Invalid argument supplied for foreach() وعند مراقبة السجل ألاحظ وجود هذا الخطأ: [2015-04-12 18:59:01] production.ERROR: exception 'ErrorException' with message 'Invalid argument supplied for foreach()' in /home/a109/vendor/symfony/console/Symfony/Component/Console/Input/ArgvInput.php:287 Stack trace: #0 /home/a109/vendor/symfony/console/Symfony/Component/Console/Input/ArgvInput.php(287): كيف أستطيع تفعيل الرتل لإجراء العملية بشكل متكرر على الاستضافة المشتركة دون تكرار الخطأ؟
  13. أحاول ضمان عمل التطبيق في لارافيل في حال فشل أحد المكونات التي أقوم باستخدامها ضمنه. وأقوم حالياً باستخدام قاعدة بيانات لتخزين البيانات الأساسية (المستخدمين، المنتجات،...). بالإضافة لذلك أقوم باستخدام redis لحفظ الجلسات والبيانات الثانوية ضمن التطبيق. الذي أحاول القيام به الآن تحديداً هو أنه في حال فشل خادم redis لسبب ما، أريد العودة تلقائياً وتخزين البيانات ضمن قاعدة البيانات بدلاً من ال cache وبذلك أضمن عدم ضياع البيانات لأي سبب كان. مع العلم أنني أقوم بتخزين بيانات ال الكاش على خادم، وبيانات الجلسات على خادم آخر 'redis' => array( 'cluster' => false, 'default' => array( 'host' => '192.168.56.101', 'port' => 6379, 'database' => 0, ), 'session' => array( 'host' => '192.168.56.102', 'port' => 6379, 'database' => 1, ), ),
  14. عند استخدام حدث في لارافيل لإعادة بيانات من قاعدة البيانات وأثناء استعمال pusher يتخطى حجم البيانات الحد المسموح به عبر pusher ويظهر لي هذا الخطأ: "The data content of this event exceeds the allowed maximum (10240 bytes)"
  15. لدي مشروع لارافيل وقمت بإنشاء اتصال مع pusher لإرسال البيانات. نجحت العملية عند استخدام public channels ولكن عند استخدام private channels يفشل في تخطي المصادقة ويعيد الخطأ Error 403 فقط في القنوات الخاصة private channels BroadcastServiceProvider.php يحوي التحقق من المستخدم عند إنشاء الاتصال بالقناة: namespace App\Providers; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\Broadcast; class BroadcastServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { Broadcast::routes(); Broadcast::channel('App.User.*', function ($user, $userId) { return true; }); } } كود ملف bootstrap.js: import Echo from "laravel-echo" window.Echo = new Echo({ broadcaster: 'pusher', key: 'My-Key-Here' }); window.Echo.private('App.User.1') .notification((notification) => { console.log(notification.type); }); يتم وصول البيانات بنجاح إلى pusher ولكنها تفشل عند الوصول إلى الروت auth
  16. لدي جدول posts ضمن قاعدة البيانات في لارافيل: public function up() { Schema::create('posts', function (Blueprint $table) { $table->bigIncrements('id'); $table->unsignedInteger('user_id'); $table->unsignedInteger('category_id'); $table->string('title'); $table->longText('body'); $table->string('thumbnail_path')->nullable(); $table->timestamps(); $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade'); }); } وقمت باستخدام cache في لارافيل لحفظ نسخة من المنشورات عن طريق الحدث event: namespace App\Listeners; use App\Post; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; use cache; class PostCacheListener { public function __construct() { } public function handle($event) { $post = Post::all(); } } كيف يمكنني حفظ نسخة من المنشورات الجديدة التي يتم إضافتها إلى قاعدة البيانات، فعند إضافة أي حقول جديدة إلى قاعدة البيانات يتم استعادة النسخة القديمة من الكاش دون تحديث.
×
×
  • أضف...