Laravel-datatables: Tidak dapat menginstal paket untuk Laravel 6.0

Dibuat pada 2 Okt 2019  ·  14Komentar  ·  Sumber: yajra/laravel-datatables

ErrorException : Argumen tidak valid diberikan untuk foreach()


Saya mencoba menjalankan perintah ini untuk menginstal composer require yajra/laravel-datatables-oracle dan saya melihat pesan di bawah ini

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.

  • Sistem Operasi: Ubuntu 19.10
  • Versi PHP: 7.3.9-1
  • Versi Laravel: 6.0
  • Versi Laravel-Datatables
can't replicate need feedback

Komentar yang paling membantu

Sepertinya ini adalah masalah dengan penemuan paket otomatis di Laravel. Jika Anda menyalin file konfigurasi datatables.php ke direktori config di Laravel dan kemudian jalankan php artisan config:clear it works. Sepertinya penemuan paket menjalankan metode boot sebelum file konfigurasi tersedia untuk menyediakan array mesin.

Semua 14 komentar

2156

Apakah Anda meningkatkan atau menggunakan instalasi baru? Coba hapus konfigurasi yang ada jika Anda sudah menerbitkannya.

Sama untuk ku. Saya menggunakan laravel dengan mode debug dan uji (bukan produksi) di localhost.
Ada solusi?
Terima kasih.

Saya memecahkan pengeditan vendor/yajra/laravel-datatables-Oracle/src/DataTablesServiceProvider.php
mengedit $engines menjadi:

$engines = [ 'eloquent' => Yajra\DataTables\Engines\EloquentEngine::class, 'query' => Yajra\DataTables\Engines\QueryBuilderEngine::class, 'collection' => Yajra\DataTables\Engines\CollectionEngine::class, // add your custom engine ];
Dan kemudian buat perintah lagi

komposer membutuhkan yajra/laravel-datatables-Oracle:"~9.0"

Kemudian Anda perlu menambahkan di confi/app.php dua baris seperti yang dikatakan di posting instalasi dan kemudian jalankan perintah:

vendor pembuat php
Dan
php artisan config: cache

Dan bekerja!!

Memiliki masalah yang sama. Ada perbaikan untuk yang ini belum?

Sepertinya ini adalah masalah dengan penemuan paket otomatis di Laravel. Jika Anda menyalin file konfigurasi datatables.php ke direktori config di Laravel dan kemudian jalankan php artisan config:clear it works. Sepertinya penemuan paket menjalankan metode boot sebelum file konfigurasi tersedia untuk menyediakan array mesin.

@yajra apakah ada perbaikan untuk ini?

Berharap untuk memperbaikinya selama beberapa minggu terakhir. Mengedit file /vendor dengan konten statis dari file konfigurasi adalah solusi, tetapi bukan perbaikan.

Akan meninjau dan mencoba mereplikasi masalah.

Mencoba pada instalasi Laravel baru dan berfungsi dengan baik.

> 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.

Adakah yang bisa memberikan beberapa langkah untuk mereplikasi ini? Terima kasih!

Baru saja melakukan instalasi baru dan saya memiliki masalah yang sama.

Secara eksplisit casting config('datatables.engines') ke array tampaknya menyelesaikannya karena melewati null ke foreach .

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

Masalah yang sama di sini, tidak dapat menjalankan perintah artisan atau apa pun dan seluruh situs macet dengan kesalahan ini. Mampu mereplikasi masalah seharusnya tidak diperlukan untuk memberikan solusi seperti yang dari @mtvbrianking , karena masalah ini mencegah penerapan yang bersih.

Harap pertimbangkan untuk mengurangi masalah ini bahkan jika Anda tidak dapat mereplikasinya.

@filliph tentu saja. Masalahnya adalah sulit bagi saya untuk memperbaiki sesuatu yang tidak dapat saya tiru. PR dari
masyarakat akan sangat membantu untuk ini.

@mtvbrianking maukah Anda mengirimkan PR tentang cara Anda memperbaiki masalah ini?

Sepertinya ini adalah masalah dengan penemuan paket otomatis di Laravel. Jika Anda menyalin file konfigurasi datatables.php ke direktori config di Laravel dan kemudian jalankan php artisan config:clear it works. Sepertinya penemuan paket menjalankan metode boot sebelum file konfigurasi tersedia untuk menyediakan array mesin.

Terima kasih, ^_^

Apakah halaman ini membantu?
0 / 5 - 0 peringkat