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.
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, ^_^
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.