Laravel-datatables: Laravel6.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を実行すると機能します。 構成ファイルを使用してengines配列を提供する前に、パッケージ検出がbootメソッドを実行しているようです。

全てのコメント14件

2156

アップグレードしていますか、それとも新規インストールを使用していますか? すでに公開している場合は、既存の構成を削除してみてください。

わたしも。 ローカルホストでデバッグモードとテストモード(本番環境ではない)でlaravelを使用しています。
解決策はありますか?
THX。

ベンダー/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 ];
そして、もう一度コマンドを作成します

Composerにはyajra / laravel-datatables-oracle: "〜9.0"が必要です

次に、インストールの投稿に記載されている2行をconfi / app.phpに追加して、次のコマンドを実行する必要があります。

php職人ベンダー:publish-- provider = Yajra \ DataTables \ DataTablesServiceProvider

php artisan config:cache

そして動作します!!

同じ問題を抱えています。 これに対する修正はまだありますか?

Laravelでの自動パッケージ検出の問題のようです。 datatables.php構成ファイルをLaravelのconfigディレクトリにコピーしてから、php artisan config:clearを実行すると機能します。 構成ファイルを使用してengines配列を提供する前に、パッケージ検出がbootメソッドを実行しているようです。

@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')を配列に明示的にキャストすると、 nullforeach渡される問題が解決するようです。

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

ここで同じ問題が発生し、職人のコマンドなどを実行できず、サイト全体がこのエラーでクラッシュしました。 この問題はクリーンな展開を妨げているため、 @ mtvbriankingのような回避策を提供するために、問題を再現できる必要はありません。

再現できない場合でも、この問題の軽減を検討してください。

もちろん@filliph 。 問題は、複製できないものを修正するのが難しいことです。 からのPR
コミュニティはこれに大きな助けになるでしょう。

@mtvbrianking問題をどのように修正したかについてPRを送って

Laravelでの自動パッケージ検出の問題のようです。 datatables.php構成ファイルをLaravelのconfigディレクトリにコピーしてから、php artisan config:clearを実行すると機能します。 構成ファイルを使用してengines配列を提供する前に、パッケージ検出がbootメソッドを実行しているようです。

ありがとう、^ _ ^

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

vipin733 picture vipin733  ·  3コメント

hari-web picture hari-web  ·  3コメント

josiahke picture josiahke  ·  3コメント

shadoWalker89 picture shadoWalker89  ·  3コメント

SGarridoDev picture SGarridoDev  ·  3コメント