Laravel-datatables: 无法安装 Laravel 6.0 的包

创建于 2019-10-02  ·  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
  • Laravel-Datatables 版本
can't replicate need feedback

最有用的评论

这似乎是 Laravel 中自动包发现的问题。 如果你将 datatables.php 配置文件复制到 Laravel 的 config 目录中,然后运行 ​​php artisan config:clear就可以了。 似乎包发现在配置文件可用于提供引擎阵列之前运行引导方法。

所有14条评论

2156

您是升级还是使用全新安装? 如果您已经发布,请尝试删除现有配置。

我也是。 我在本地主机中使用带有调试和测试模式(非生产)的 laravel。
有什么解决办法吗?
谢谢。

我解决了编辑 vendor/yajra/laravel-datatables-oracle/src/DataTablesServiceProvider.php
将 $engines 编辑为:

$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 artisan vendor:publish --provider=Yajra\DataTables\DataTablesServiceProvider

php工匠配置:缓存

和作品!

有同样的问题。 对这个有任何修复吗?

这似乎是 Laravel 中自动包发现的问题。 如果你将 datatables.php 配置文件复制到 Laravel 的 config 目录中,然后运行 ​​php artisan config:clear就可以了。 似乎包发现在配置文件可用于提供引擎阵列之前运行引导方法。

@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你介意发送一个关于你如何解决这个问题的 PR 吗?

这似乎是 Laravel 中自动包发现的问题。 如果你将 datatables.php 配置文件复制到 Laravel 的 config 目录中,然后运行 ​​php artisan config:clear就可以了。 似乎包发现在配置文件可用于提供引擎阵列之前运行引导方法。

谢谢,^_^

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

sangnguyenplus picture sangnguyenplus  ·  3评论

SGarridoDev picture SGarridoDev  ·  3评论

FilipeBorges1993 picture FilipeBorges1993  ·  3评论

jackrsantana picture jackrsantana  ·  3评论

Abdulhmid picture Abdulhmid  ·  3评论