Tentei executar este comando para instalar composer require yajra/laravel-datatables-oracle
e vi a mensagem abaixo
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.
Você está atualizando ou usando uma nova instalação? Tente remover a configuração existente se você já publicou.
O mesmo para mim. Estou usando laravel com modo de depuração e teste (não de produção) no localhost.
Qualquer solução?
Valeu.
Resolvi a edição vendor / yajra / laravel-datatables-oracle / src / DataTablesServiceProvider.php
editando $ engines para:
$engines = [
'eloquent' => Yajra\DataTables\Engines\EloquentEngine::class,
'query' => Yajra\DataTables\Engines\QueryBuilderEngine::class,
'collection' => Yajra\DataTables\Engines\CollectionEngine::class,
// add your custom engine
];
E então faça o comando novamente
composer requer yajra / laravel-datatables-oracle: "~ 9.0"
Então você precisa adicionar em confi / app.php as duas linhas conforme dito no post de instalação e então executar o comando:
fornecedor de artesão php
E
php artisan config: cache
E funciona !!
Tendo o mesmo problema. Alguma correção para este ainda?
Parece que é um problema com a descoberta automática de pacotes no Laravel. Se você copiar o arquivo de configuração datatables.php para o diretório de configuração do Laravel e então executar o php artisan config: clear it works. Parece que a descoberta do pacote está executando o método de inicialização antes que o arquivo de configuração esteja disponível para fornecer o array engines.
@yajra, existe alguma solução para isso?
Esperava encontrar uma solução para isso nas últimas semanas. Editar /vendor
arquivos com conteúdo estático de um arquivo de configuração é uma solução alternativa, mas não uma correção.
Analisará e tentará replicar o problema.
Experimentei uma instalação nova do Laravel e funciona bem.
> 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.
Alguém pode fornecer algumas etapas para replicar isso? Obrigado!
Acabei de fazer uma nova instalação e tenho o mesmo problema.
Casting config('datatables.engines')
explicitamente em um array parece resolvê-lo, fazendo com que ele passe null
para foreach
.
- $engines = config('datatables.engines');
+ $engines = (array) config('datatables.engines');
Mesmo problema aqui, não consigo executar nenhum comando artesanal ou qualquer coisa e todo o site travou com este erro. Ser capaz de replicar o problema não deve ser necessário para fornecer uma solução alternativa como a de @mtvbrianking , pois esse problema está impedindo uma implantação limpa.
Considere mitigar esse problema, mesmo que você não consiga replicá-lo.
@filliph é claro. O problema é que para mim é difícil consertar algo que não consigo replicar. Um PR de
a comunidade seria uma grande ajuda para isso.
@mtvbrianking , você se importaria de enviar um PR sobre como você corrigiu o problema?
Parece que é um problema com a descoberta automática de pacotes no Laravel. Se você copiar o arquivo de configuração datatables.php para o diretório de configuração do Laravel e então executar o php artisan config: clear it works. Parece que a descoberta do pacote está executando o método de inicialização antes que o arquivo de configuração esteja disponível para fornecer o array engines.
Obrigado, ^ _ ^
Comentários muito úteis
Parece que é um problema com a descoberta automática de pacotes no Laravel. Se você copiar o arquivo de configuração datatables.php para o diretório de configuração do Laravel e então executar o php artisan config: clear it works. Parece que a descoberta do pacote está executando o método de inicialização antes que o arquivo de configuração esteja disponível para fornecer o array engines.