Laravel-datatables: No se puede instalar el paquete para Laravel 6.0

Creado en 2 oct. 2019  ·  14Comentarios  ·  Fuente: yajra/laravel-datatables

ErrorException: argumento no válido proporcionado para foreach ()


Intenté ejecutar este comando para instalar composer require yajra/laravel-datatables-oracle y vi el siguiente mensaje

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.

  • Sistema operativo: Ubuntu 19.10
  • Versión de PHP: 7.3.9-1
  • Versión de Laravel: 6.0
  • Versión de Laravel-Datatables
can't replicate need feedback

Comentario más útil

Parece que es un problema con el descubrimiento automático de paquetes en Laravel. Si copia el archivo de configuración datatables.php en el directorio de configuración en Laravel y luego ejecuta php artisan config: clear it works. Parece que el descubrimiento de paquetes está ejecutando el método de arranque antes de que el archivo de configuración esté disponible para proporcionar la matriz de motores.

Todos 14 comentarios

2156

¿Está actualizando o utilizando una instalación nueva? Intente eliminar la configuración existente si ya publicó.

Lo mismo para mi. Estoy usando laravel con modo de depuración y prueba (no producción) en localhost.
¿Alguna solución?
Gracias.

Resolví la edición de vendor / yajra / laravel-datatables-oracle / src / DataTablesServiceProvider.php
editar $ motores para:

$engines = [ 'eloquent' => Yajra\DataTables\Engines\EloquentEngine::class, 'query' => Yajra\DataTables\Engines\QueryBuilderEngine::class, 'collection' => Yajra\DataTables\Engines\CollectionEngine::class, // add your custom engine ];
Y luego haz el comando de nuevo

el compositor requiere yajra / laravel-datatables-oracle: "~ 9.0"

Luego debe agregar en confi / app.php las dos líneas como se indica en la publicación de instalación y luego ejecutar el comando:

proveedor artesanal php
Y
php artisan config: caché

¡¡Y funciona !!

Tener el mismo problema. ¿Alguna solución a este todavía?

Parece que es un problema con el descubrimiento automático de paquetes en Laravel. Si copia el archivo de configuración datatables.php en el directorio de configuración en Laravel y luego ejecuta php artisan config: clear it works. Parece que el descubrimiento de paquetes está ejecutando el método de arranque antes de que el archivo de configuración esté disponible para proporcionar la matriz de motores.

@yajra, ¿hay alguna solución para esto?

Esperaba tener una solución para esto las últimas dos semanas. La edición de archivos /vendor con contenido estático desde un archivo de configuración es una solución alternativa, pero no una solución.

Revisará e intentará replicar el problema.

Probé una nueva instalación de Laravel y funciona bien.

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

¿Alguien puede proporcionar algunos pasos para replicar esto? ¡Gracias!

Acabo de realizar una instalación nueva y tengo el mismo problema.

La conversión explícita de config('datatables.engines') a una matriz parece resolverlo porque pasa null a foreach .

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

El mismo problema aquí, no se puede ejecutar ningún comando artesanal ni nada y todo el sitio se ha bloqueado con este error. Ser capaz de replicar el problema no debería ser necesario para proporcionar una solución alternativa como la de @mtvbrianking , ya que este problema impide una implementación limpia.

Considere mitigar este problema incluso si no puede replicarlo.

@filliph por supuesto. El problema es que me resulta difícil arreglar algo que no puedo replicar. Un PR de
la comunidad sería de gran ayuda para esto.

@mtvbrianking, ¿le importaría enviar un PR sobre cómo solucionó el problema?

Parece que es un problema con el descubrimiento automático de paquetes en Laravel. Si copia el archivo de configuración datatables.php en el directorio de configuración en Laravel y luego ejecuta php artisan config: clear it works. Parece que el descubrimiento de paquetes está ejecutando el método de arranque antes de que el archivo de configuración esté disponible para proporcionar la matriz de motores.

Gracias ^ _ ^

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

vipin733 picture vipin733  ·  3Comentarios

alejandri picture alejandri  ·  3Comentarios

jgatringer picture jgatringer  ·  3Comentarios

sangnguyenplus picture sangnguyenplus  ·  3Comentarios

t0n1zz picture t0n1zz  ·  3Comentarios