Laravel-datatables: تعذر تثبيت حزمة Laravel 6.0

تم إنشاؤها على ٢ أكتوبر ٢٠١٩  ·  14تعليقات  ·  مصدر: yajra/laravel-datatables

ErrorException: تم توفير وسيطة غير صالحة لـ foreach ()


حاولت تشغيل هذا الأمر لتثبيت composer require yajra/laravel-datatables-oracle ورأيت الرسالة أدناه

Using version ^9.7 for yajra/laravel-datatables-oracle
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> <strong i="9">@php</strong> artisan package:discover --ansi

   ErrorException  : Invalid argument supplied for foreach()

  at /var/www/atd-inspector/vendor/yajra/laravel-datatables-oracle/src/DataTablesServiceProvider.php:45
    41|      */
    42|     public function boot()
    43|     {
    44|         $engines = config('datatables.engines');
  > 45|         foreach ($engines as $engine => $class) {
    46|             $engine = Str::camel($engine);
    47| 
    48|             if (! method_exists(DataTables::class, $engine) && ! DataTables::hasMacro($engine)) {
    49|                 DataTables::macro($engine, function () use ($class) {

  Exception trace:

  1   Illuminate\Foundation\Bootstrap\HandleExceptions::handleError("Invalid argument supplied for foreach()", "/var/www/atd-inspector/vendor/yajra/laravel-datatables-oracle/src/DataTablesServiceProvider.php", [])
      /var/www/atd-inspector/vendor/yajra/laravel-datatables-oracle/src/DataTablesServiceProvider.php:45

  2   Yajra\DataTables\DataTablesServiceProvider::boot()
      /var/www/atd-inspector/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:32

  Please use the argument -v to see more details.
Script <strong i="10">@php</strong> artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1

Installation failed, reverting ./composer.json to its original content.

  • نظام التشغيل: Ubuntu 19.10
  • إصدار PHP: 7.3.9-1
  • إصدار Laravel: 6.0.1
  • نسخة Laravel-Datatables
can't replicate need feedback

التعليق الأكثر فائدة

يبدو أنها مشكلة في الاكتشاف التلقائي للحزم في Laravel. إذا قمت بنسخ ملف التكوين datatables.php في دليل التكوين في Laravel ثم قمت بتشغيل php artisan config: امسحه يعمل. يبدو أن اكتشاف الحزمة يقوم بتشغيل طريقة التمهيد قبل أن يتوفر ملف التكوين لتوفير مجموعة المحركات.

ال 14 كومينتر

2156

هل تقوم بالترقية أو استخدام تثبيت جديد؟ حاول إزالة التكوين الحالي إذا كنت قد نشرت بالفعل.

نفس الشيء بالنسبة لي. أنا أستخدم Laravel مع وضع التصحيح والاختبار (وليس الإنتاج) في المضيف المحلي.
اي حل؟
شكرا.

لقد قمت بحل مشكلة بائع التحرير / yajra / laravel-datatables-oracle / src / DataTablesServiceProvider.php
تحرير محركات $ إلى:

$engines = [ 'eloquent' => Yajra\DataTables\Engines\EloquentEngine::class, 'query' => Yajra\DataTables\Engines\QueryBuilderEngine::class, 'collection' => Yajra\DataTables\Engines\CollectionEngine::class, // add your custom engine ];
ثم قم بعمل الأمر مرة أخرى

يتطلب الملحن yajra / laravel-datatables-oracle: "~ 9.0"

ثم تحتاج إلى إضافة سطرين في confi / app.php كما قيل في منشور التثبيت ثم قم بتشغيل الأمر:

بائع حرفي php
و
التكوين الحرفي php

ويعمل !!

وجود نفس المشكلة. أي إصلاح لهذا واحد حتى الآن؟

يبدو أنها مشكلة في الاكتشاف التلقائي للحزم في Laravel. إذا قمت بنسخ ملف التكوين datatables.php في دليل التكوين في Laravel ثم قمت بتشغيل php artisan config: امسحه يعمل. يبدو أن اكتشاف الحزمة يقوم بتشغيل طريقة التمهيد قبل أن يتوفر ملف التكوين لتوفير مجموعة المحركات.

yajra هل هناك أي إصلاح قادم لهذا؟

كان يأمل في الحصول على إصلاح لهذا الأسبوعين الماضيين. يعد تحرير ملفات /vendor ذات المحتوى الثابت من ملف التكوين بمثابة حل بديل ، ولكنه ليس إصلاحًا.

سنراجع المشكلة ونحاول تكرارها.

تمت تجربة تثبيت Laravel حديثًا ويعمل بشكل جيد.

> laravel new 2202
........

> composer require yajra/laravel-datatables-oracle
Using version ^9.7 for yajra/laravel-datatables-oracle
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing yajra/laravel-datatables-oracle (v9.7.1): Loading from cache
yajra/laravel-datatables-oracle suggests installing yajra/laravel-datatables-buttons (Plugin for server-side exporting of dataTables.)
yajra/laravel-datatables-oracle suggests installing yajra/laravel-datatables-html (Plugin for server-side HTML builder of dataTables.)
yajra/laravel-datatables-oracle suggests installing yajra/laravel-datatables-fractal (Plugin for server-side response using Fractal.)
yajra/laravel-datatables-oracle suggests installing yajra/laravel-datatables-editor (Plugin to use DataTables Editor (requires a license).)
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> <strong i="6">@php</strong> artisan package:discover --ansi
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Discovered Package: yajra/laravel-datatables-oracle
Package manifest generated successfully.

هل يمكن لأي شخص أن يقدم بعض الخطوات لتكرار هذا؟ شكرا!

لقد أجريت تثبيتًا جديدًا ولدي نفس المشكلة.

يبدو أن تحويل config('datatables.engines') إلى مصفوفة بشكل صريح يؤدي إلى حلها ، مما تسبب في تمريرها null إلى foreach .

- $engines = config('datatables.engines');
+ $engines = (array) config('datatables.engines');

نفس المشكلة هنا ، لا يمكن تشغيل أي أوامر حرفية أو أي شيء وقد تعطل الموقع بالكامل بسبب هذا الخطأ. لا ينبغي أن تكون القدرة على تكرار المشكلة ضرورية لتوفير حل بديل مثل ذلك من mtvbrianking ، لأن هذه المشكلة تمنع النشر النظيف.

يرجى التفكير في التخفيف من هذه المشكلة حتى إذا كنت غير قادر على تكرارها.

filliph بالطبع. المشكلة هي أنه من الصعب علي إصلاح شيء لا يمكنني تكراره. العلاقات العامة من
سيكون المجتمع مساعدة كبيرة لهذا.

mtvbrianking هل تمانع في إرسال

يبدو أنها مشكلة في الاكتشاف التلقائي للحزم في Laravel. إذا قمت بنسخ ملف التكوين datatables.php في دليل التكوين في Laravel ثم قمت بتشغيل php artisan config: امسحه يعمل. يبدو أن اكتشاف الحزمة يقوم بتشغيل طريقة التمهيد قبل أن يتوفر ملف التكوين لتوفير مجموعة المحركات.

شكرا ، ^ _ ^

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

shadoWalker89 picture shadoWalker89  ·  3تعليقات

FilipeBorges1993 picture FilipeBorges1993  ·  3تعليقات

jackrsantana picture jackrsantana  ·  3تعليقات

SGarridoDev picture SGarridoDev  ·  3تعليقات

hohuuhau picture hohuuhau  ·  3تعليقات