2017-12-29 48 views
0

symfony 2.7からsymfony 4.0に移行しています。成功すると、私は1つのバンドルを移行しました。今すぐ2番目のバンドルを移行していますが、エラーメッセージが表示されています。 symfony 4.0が私に望んでいることはまったく得られません。symfony4 autowireをtrueにマイグレートする - エラーメッセージが表示される

autowire: trueをオンにすると、このエラーメッセージが表示されます。

Cannot autowire service "App\Kernel": argument "$environment" of method "Symfony\Component\HttpKernel\Kernel::__construct()" must have a type-hint or be given a value explicitly. 

誰か助けてもらえますか?

これをオフにすると、メッセージが表示されません。

更新

私は通常のカーネルは、それがで生成されていないという意味、いわゆる合成サービスとしてサービスコンテナに追加されただけbundles.php

App\Backend\AccountBundle\BackendAccountBundle::class => ['all' => true], 
+0

あなたの設定ファイルを貼り付けることはできますか?現時点ではあなたのカーネルをautowireしようとします。 – user254319

+0

symfony4のデフォルトです。しかし、更新は私の質問にあります – craphunter

+1

私は設定ファイルでもっと面白いです。 'config/services.yaml'では、autowiringに関するすべてのことを定義しています。 – user254319

答えて

4

で私のバンドルを登録DIコンテナを構成から削除します。むしろidが設定され、以前に設定されたサービスが単にコンテナに追加されます。あなたのバンドルのコンテナがここに新しいカーネルを作成したいと思うのはちょっと奇妙なようです。そこで、バンドルのサービスのどこでカーネルにアクセスするか、実際にカーネルを渡すかどうか、どこにどのようにアクセスするかを確認します。あなたが行う場合は、コンポジットサービスに関するサービスコンテナの文書をチェックしたいかもしれません。

エラー自体について。

# config/services.yaml 
parameters: 
    environment: prod 
    debug: false 
:いずれかのパラメータは、パラメータの名前と一致して、あなたの services.yamlで定義されているように、あなたが持っているこれらのケースでは

public function __construct(string $environment, bool $debug) {...} 

:あなたがKernelとのようなパラメータを必要とするサービスを持っているとき、symfonyのオートワイヤリングは、多くの場合、平らに落ちます

のいずれかのパラメータを設定する必要があります。

App\Kernel: 
    $environment: prod 
    $debug: false 

これはenvironmentdebugという名前だけ2つの引数は、指定した値で上書きされなければならないオートワイヤリングを教えてくれますが、残りはオートワイヤリングを介して行われます。こうすることで、定義の一部分をスキップして、autowiringによって正しく設定されていることを知っているすべての引数をスキップすることができます。あなたはこのようなサービスがあれば

例えば:

class MyService { 
    public function __construct(OtherServce $service, string $someParameter) {} 
} 

# config/services.yaml 

services: 
    _defaults: 
     autowiring: true 

    MyService: 
     $someParameter: 'someValue' 

をこれは、明示的に書くと同じである:

services: 
    MyService: 
     class: MyService 
     arguments: 
      - '@OtherServce' 
      - 'someValue' 
+0

ありがとう!非常に良いと高品質の答え! – craphunter

関連する問題