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

Mahmoud Alrashidi

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

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

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

كل منشورات العضو Mahmoud Alrashidi

  1. أحاول إستخدام Laravel Sail عند إنشاء مشروع لارافيل قمت بتنفيذ الأمر: curl -s https://laravel.build/sail-test | bash ثم نفذت الأمر: cd sail-test && ./vendor/bin/sail up كل شيء تم بشكل صحيح و عند تجربة المشروع من خلال http://localhost. يعمل بشكل جيد لكن عند تنفيذ أمر التهجير: sail artisan migrate:install يظهر الخطأ: Illuminate\Database\QueryException SQLSTATE[HY000] [2002] No route to host (SQL: create table `migrations` (`id` int unsigned not null auto_increment primary key, `migration` varchar(255) not null, `batch` int not null) default character set utf8mb4 collate 'utf8mb4_unicode_ci') at vendor/laravel/framework/src/Illuminate/Database/Connection.php:678 674▕ // If an exception occurs when attempting to run a query, we'll format the error 675▕ // message to include the bindings with SQL, which will make this exception a 676▕ // lot more helpful to the developer instead of just the database's errors. 677▕ catch (Exception $e) { ➜ 678▕ throw new QueryException( 679▕ $query, $this->prepareBindings($bindings), $e 680▕ ); 681▕ } 682▕ +29 vendor frames 30 artisan:37 Illuminate\Foundation\Console\Kernel::handle() كيف يُمكن حل المُشكلة؟
  2. أستعمل Pusher مع laravel الإصدار 8. عند بث event أتلقى هذا الخطأ. أستطيع أن أرى أن الحدث تم إطلاقه في pusher degub console . أنا لا أفهم سبب هذا الخطأ. {message: "Undefined property: stdClass::$channels", exception: "ErrorException",…} exception: "ErrorException" file: "C:\xampp\htdocs\realtimechat\vendor\pusher\pusher-php-server\src\Pusher.php" line: 538 message: "Undefined property: stdClass::$channels" trace: [{file: "C:\xampp\htdocs\realtimechat\vendor\pusher\pusher-php-server\src\Pusher.php", line: 538,…},…] و هذا الكود الخاص بي: <?php public function sendMessage(Request $request) { event(new MessageEvent('this is my first event')); } وهذا صنف ال event: <?php namespace App\Events; use Illuminate\Broadcasting\Channel; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Broadcasting\PresenceChannel; use Illuminate\Broadcasting\PrivateChannel; use Illuminate\Contracts\Broadcasting\ShouldBroadcast; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; class MessageEvent implements ShouldBroadcast { use Dispatchable, InteractsWithSockets, SerializesModels; public $message; /** * Create a new event instance. * * @return void */ public function __construct($message) { $this->message = $message; } /** * Get the channels the event should broadcast on. * * @return \Illuminate\Broadcasting\Channel|array */ public function broadcastOn() { return new Channel('channel-name'); } public function broadcastAs() { return 'userChatChannel'; } }
  3. أنا أستخدم حزمة beyondcode / laravel-websockets وأحاول بدء تشغيل خادم websockets على Homestead. قمت بتثبيت الحزمة لكن عند تنفيذ الأمر: php artisan websockets:serve يُعطي الخطأ التالي: Starting the WebSocket server on port 6001... RuntimeException : Failed to listen on "tcp://0.0.0.0:6001": Address already in use at /home/vagrant/code/websockets/vendor/react/socket/src/TcpServer.php:164 160| \STREAM_SERVER_BIND | \STREAM_SERVER_LISTEN, كيف يُمكن حل هذه المُشكلة.
  4. يوجد صنف في Jetstream هو : UpdateProfileInformationForm موجود ضمن المجلد vendor و عند عمل publish لا يتم نشره في ملفات المشروع الخاص بي حيث لا يُمكنني التعديل عليه يوجد بداخله هذه الدالة: public function updateProfileInformation(UpdatesUserProfileInformation $updater) { $this->resetErrorBag(); $updater->update( Auth::user(), $this->photo ? array_merge($this->state, ['photo' => $this->photo]) : $this->state ); if (isset($this->photo)) { return redirect()->route('profile.show'); } $this->emit('saved'); $this->emit('refresh-navigation-dropdown'); } أريد التعديل على هذه الدالة بشكل ما. الأمر الثاني هو أنني أريد إضافة خاصية إلى هذا الصنف ، على سبيل المثال للقيام بذلك: <livewire:profile.update-profile-information-form :title="$title"/> كيف يُمكن عمل ذلك.
  5. لدي مشروع Laravel جديد أعمل عليه. أود أن أجعله متاحًا بلغات متعددة. لقد بدأت المشروع مع JetStream. حيث يتم التعامل مع مسارات المصادقة تلقائيًا بواسطة JetStream / Fortify. ثم أضفت Laravel Localization للتعامل مع تعدد اللغات. إنها تعمل بشكل جيد للمسارات التي أنشأتها بنفسي: Route::group( [ 'prefix' => LaravelLocalization::setLocale(), 'middleware' => [ 'localeSessionRedirect', 'localizationRedirect', 'localeViewPath' ] ], function() { Route::get('/', function () { return view('welcome'); }); Route::middleware(['auth:sanctum', 'verified'])->get('/dashboard', function () { return view('dashboard'); })->name('dashboard'); }); ولكن كيف يمكنني تعيين ال group و ال prefix و ال middleware الخاصة بالحزمة Laravel Localization على المسارات التي تتعامل معها Jetstream و Fortify؟
  6. لقد بدأت في إنشاء تطبيق ويب باستخدام Laravel 8. لقد لاحظت أن الكثير من الأشياء قد تغيرت في Laravel 8 بما في ذلك المصادقة. الآن ، أحاول استخدام Jetstream للمصادقة بدل حزمة Laravel/UI أريد إضافة حقل جديد company لصفحة تسجيل مُستخدم جديد و لا أعرف كيف يُمكن إضافة حقول جديدة و عند إنشاء المُستخدم يتم تمريرها و تخزينها في قاعدة البيانات.
  7. استخدم الكود التالي في مشروع لارافيل <?php if ( $post_meta->where('meta_key', 'faq_content') ) { $faq_number = $post_meta->where('meta_key', 'faq_content')->first()->meta_value; } else { $faq_number = 0; } و يحدث الخطأ التالي: Trying to get property 'meta_value' of non-object ما المشكلة في ذلك.
  8. كيف يُمكن إتاحة التحقق من البريد الإلكتروني في مشروع لارافيل استخدم حزمة Laravel/ui و أريد تفعيل هذه الخاصية فإذا لم يُفعل المُستخدم حسابه عن طريق التحقق من البريد لا يستطيع تصفح خصائص التطبيق.
  9. أنا استخدم View Composer لتمرير بعض البيانات إلى صفحة master layout لكنها لا تنقل شيء لصفحة العرض ماهي المُشكلة: View::composer('layouts.dashboard.master', function($view){ $userNoteRepository = resolve(UserNoteRepositoryInterface::class); $current_user_notification = $userNoteRepository->getCurrentUserAlertNotifications(); $current_user_notification_count = count($userNoteRepository->getCurrentUserAlertNotifications()); $view->with('current_user_notification', 'current_user_notification_count'); });
  10. عند تنفيذ الأمر التالي في الطرفية: composer require laravel/horizon يعطي الخطأ التالي: Using version ^5.7 for laravel/horizon ./composer.json has been updated Running composer update laravel/horizon Loading composer repositories with package information Updating dependencies Your requirements could not be resolved to an installable set of packages. Problem 1 - laravel/horizon[v5.7.0, ..., 5.x-dev] require ext-pcntl * -> it is missing from your system. Install or enable PHP's pcntl extension. - Root composer.json requires laravel/horizon ^5.7 -> satisfiable by laravel/horizon[v5.7.0, v5.7.1, 5.x-dev]. To enable extensions, verify that they are enabled in your .ini files: - C:\laragon\bin\php\php-7.4.7-Win32-vc15-x64\php.ini You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode. Installation failed, reverting ./composer.json and ./composer.lock to their original content. ما فهمته من الخطأ أنه يحتاج إلى تفعيل الإضافة ext-pcntl لكن عندما بحثت عن الإضافة في ملف php.ini لم أجدها كيف يُمكن تجاوز المُشكلة.
  11. استخدم laravel jetstream قمت بإنشاء مشروع بشكل عادي عن طريق: laravel new cms --jet قام الأمر بإنشاء كافة الملف اللازمة و بعد ذلك قمت بتفعيل خيار صور الحساب الشخصي في ملف إعدادات jetstream: 'features' => [ // Features::termsAndPrivacyPolicy(), Features::profilePhotos(), // Features::api(), Features::teams(['invitations' => true]), Features::accountDeletion(), ], بعد ذلك سجلت مُستخدم جديد و رفعت الصورة، الصورة يتم رفعها في مجلد storage بشكل جيد لكن لا تظهر في الصفحة.
  12. كيف يُمكنني تخصيص صفحات العرض الخاصة بالأخطاء في لارافيل إلى صفحات خاصة بي و بالشكل الذي أريد.
  13. يحتوي الجدول الخاص بي على الأعمدة التالية message و data حيث message عبارة عن سلسلة نصية string و data عبارة عن json مُحوَل إلى مصفوفة. عموما العمود message يحتوي على مفاتيح هذه المفاتيح قيمها تكون مخزنة في المصفوفة في العمود data مثلاً: message - 'This is test for {some_key}' data - ['some_key' => 'laravel'] أريد تغيير هذه السلسلة في الخاصية message إلى القيمة في مصفوفة البيانات عند استرداد النموذج (ولكن عند الاسترداد فقط وليس عند الحفظ)، مثلاً في المثال السابق يكون الناتج: This is test for laravel كيف يُمكن عمل ذلك؟
  14. كيف يمكنني إضافة cdn لجافا سكريبت أو css لمكون واحد فقط؟ أقوم بتوسيع layouts.app Laravel في صف المكون. كنت أفكر في أن هذا مشابه لجعل العائد داخل التخطيط الرئيسي. لكن لست متأكدًا من كيفية حقن عناوين url من المكون
  15. لدي مكون واحد به فيديو يستخدم مكتبة videojs لتحميله. في هذا المكون ، أرسل حدثًا بعد 3 ثوانٍ لتمييز مقاطع الفيديو هذه على أنها تمت مشاهدتها باستخدام كود جافا سكريبت هذا: var player = videojs('yt-video') player.on('timeupdate', function() { if(this.currentTime() > 3 ) { Livewire.emit('VideoViewed') this.off('timeupdate') } }) ثم أستمع إلى هذا الحدث داخل الفصل وأقوم بتحديث قاعدة البيانات، هذا يعمل بشكل جيد باستثناء مشكلة واحدة. بعد تشغيل المكون للحدث ، يستمر تشغيل الفيديو ولكنه يُظهر زر التشغيل حتى يتم تشغيل الفيديو وإزالة جميع عناصر التحكم في الفيديو أيضًا و يُظهر هذا الخطأ في الطرفية: Uncaught DOMException: Failed to execute 'replaceChild' on 'Node': The node to be replaced is not a child of this node. at t.<anonymous> (https://vjs.zencdn.net/7.10.2/video.min.js:19:51700) at t.<anonymous> (https://vjs.zencdn.net/7.10.2/video.min.js:12:25973) at https://vjs.zencdn.net/7.10.2/video.min.js:12:25749
  16. لدي نموذج للطلبات Order حيث كل مُستخدم له عدة طلبات حسب العلاقة hasMany: <?php public function orders() { return $this->hasMany(Order::class); } أما النموذج Order: <?php public function user() { return $this->belongsTo(User::class); } حيث يربط النموذجين الحقل user_id و يوجد في جدول الطلبات الحقل amount لتخزين مبلغ الطلب. أريد معرفة كيف بإمكاني عمل فلترة للمُستخدمين حسب الأكثر طلباً أي من الأعلى طلب إلى الأقل طلب و الفلترة أيضاً حسب مجموع قيمة الطلبات.
  17. قابلتني المُشكلة التالية عند إستخدام مكتبة Laravel Socialite عبر Api أحاول تمرير الكود إلى واجهة برمجة التطبيقات الخاصة بي لجلب المستخدم ولكنه يستمر في إعطائي خطأ: Fatal error: Call to a member function pull() on null و هذه المراحل التي أتبعها: أرسل طلبًا إلى api لعنوان url لجلب الكود: Socialite::with('facebook')->stateless()->redirect()->getTargetUrl() ثم أرسل طلبًا باستخدام عنوان url الذي تم جلبه أعلاه ، و أرسل الكود إلى واجهة برمجة التطبيقات لجلب المستخدم: $fb_user = Socialite::with('facebook')->user(); لقد استخدمت الحزمة من قبل وهي تعمل بشكل جيد عندما يكون لدي تطبيق يعيد تحميل الصفحة.
  18. لدي نموذجين PaymentMethod و PaymentMethodCategory حيث العلاقة بينهما هي واحد لمتعدد أي كل PaymentMethod تنتمي إلى PaymentMethodCategory و المفتاح الثانوي الذي يربط بينهما هو payment_method_category_id و العلاقة في النموذج PaymentMethod بالشكل التالي: public function category() { return $this->belongsTo(PaymentMethodCategory::class, 'payment_method_category_id', 'id'); } لكن عند إرجاع و تحديد بعض بيانات العلاقة كما هو موضح أدناه يُعطي null: return PaymentMethod::select('name', 'slug') ->with(['category' => function($query){ $query->select('id', 'name')->where('status', 1); }])->get(); لكن عند حذف: $query->select('id', 'name') يتم إرجاع كافة البيانات، لا أدري ما المشكلة و كيف أقوم بحلها.
  19. لدي المُكون التالي: <?php class AppAddTask extends Component { public $title; public $description; public function render() { return view('livewire.app-add-task'); } public function addTask() { // ... } } و هذا ملف view الخاص بالمُكون: <div> <h3 class="text-center">Add New Task</h3> <div class="form-group"> <label for="title">Title</label> <input type="text" wire:model="title" class="form-control"> </div> <div class="form-group"> <label for="description">Description</label> <textarea wire:model="description" class="form-control"></textarea> </div> <div class="form-group"> <button wire:click.prevent="addTask" class="btn btn-primary btn-block">Add</button> </div> </div> أريد التحقق من المدخلات في الوقت الفعلي الذي يكتب فيه المستخدم في حقول الإدخال و عرض رسائل الخطأ، كيف يُمكنني عمل ذلك؟
  20. لدي المُكون التالي لعرض مجموعة من المهام: class AppTasks extends Component { protected $listeners = ['taskAdded' => '$refresh']; public function render() { $totalTasks = auth()->user()->tasks()->count(); $tasks = auth()->user()->tasks()->latest()->get(); return view('livewire.app-tasks', [ 'totalTasks' => $totalTasks, 'tasks' => $tasks ]); } } أريد إضافة pagination بنفس طريقة ال blade لكن يظهر بشكل غير جيد، هل هناك طريقة محددة و عند الضغط على الصفحات يتم الإنتقال بدون تحديث.
  21. لدي مُكونين livewire: <div class="col-md-4 p-4"> @livewire('app-add-task') </div> <div class="col-md-8 p-4"> @livewire('app-tasks') </div> المُكون الأول لإضافة مهمة جديدة و المُكون الثاني لعرض جميع المهام، عند إضافتي للمهمة يتم إضافتها لكن لا تظهر مباشرة في الصفحة و إنما حتى أقوم بتحديث الصفحة هل هناك طريقة لعرض المهمة مباشرة من دون تحديث للصفحة، هذا كود المُكون الأول: class AppAddTask extends Component { public $title; public function render() { return view('livewire.app-add-task'); } public function addTask() { auth()->user()->tasks()->create([ 'title' => $this->title, 'status' => false, ]); $this->title = ""; } } و هذا كود المُكون الثاني: class AppTasks extends Component { public function render() { $totalTasks = auth()->user()->tasks()->count(); $tasks = auth()->user()->tasks()->latest()->get(); return view('livewire.app-tasks', [ 'totalTasks' => $totalTasks, 'tasks' => $tasks ]); } }
  22. أحاول إختبار خاصية رفع فيديو عن طريق Laravel Livewire بالرغم من أن خاصية الرفع تعمل إلا أن الإختبار يفشل و لا أدر أين المُشكلة، هذا إختبار الخاصية: public function can_upload_video() { $sizeInKilobytes = 100000; $file = UploadedFile::fake()->create( 'video.mp4', $sizeInKilobytes, 'mp4' ); Storage::fake('videos_disk'); $this->actingAs(User::factory()->create()); Livewire::test(Create::class) ->set('title', 'foo') ->set('video', $file) ->call('upload'); dd(Storage::disk('videos_disk')->allFiles()); } و هذا مُكون livewire: class Create extends Component { use WithFileUploads; use DispatchesJobs; public $video; public $title, public function upload() { $this->validate([ 'title' => 'required', 'video' => 'max:1000000|required|file|mimetypes:video/mp4,video/mpeg,video/x-matroska', ]); $video = Video::create([ 'disk' => 'videos_disk', 'original_name' => $this->video->getClientOriginalName(), 'path' => $this->video->store('/', 'videos_disk'), 'streaming_path'=> null, 'title' => $this->title, ]); $this->dispatch(new ConvertVideoForStreaming($video)); } } الخاصية تعمل لكن عند تنفيذ الإختبار يُعطي مصفوفة فارغة. المُتوقع أن يعطيني مصفوفة بها الملف المرفوع.
  23. لدي الكود التالي: <?php $company = Company::find($id) ->update([ "company_name" => $request["company_name"], "former_company" => $request["former_company"], "company_logo" => $imageName, ]); أريد تعديل الحقل company_logo في حالة ما إذا كان المُتغير imageName لا يُساوي null أما إن كان null يقوم بتعديل الحقول الأخرى فقط. هل هناك إمكانية لعمل هذا داخل الدالة update.
  24. أحاول التخلص من الشروط في الكود التالي: if ($this->searchTerm) { $searchTerm = '%' . $this->searchTerm . '%'; $getSales = Shoppingcart::where('trans_code', 'LIKE', $searchTerm) ->select('trans_code', 'created_at', DB::raw("SUM(sub_total) as total")) ->groupBy('trans_code') ->paginate(10); } else { $getSales = Shoppingcart::with(['user']) ->select('trans_code', 'created_at', DB::raw("SUM(sub_total) as total")) ->groupBy('trans_code') ->paginate(10); } و تقليصه قليلا عن طريق إستخدام when كيف يُمكنني عمل ذلك حاولت لكن لم أستطع.
  25. قمت بإنشاء Job إسمه ProcessCSV لكن عند تنفيذ الأمر: php artisan queue:work لا يتم تنفيذ الJob و تحدث حلقة غير منتهية Processing: App\Jobs\ProcessCSV Processing: App\Jobs\ProcessCSV Processing: App\Jobs\ProcessCSV Processing: App\Jobs\ProcessCSV Processing: App\Jobs\ProcessCSV Processing: App\Jobs\ProcessCSV Processing: App\Jobs\ProcessCSV Processing: App\Jobs\ProcessCSV ... لا أدري ما المشكلة و كيف يُمكن معالجة الأمر.
×
×
  • أضف...