私はsymfony 3.1を使用しています。symfony 3はサービスにEntityManagerをインジェクトしません
サービスクラスにEntityManagerを挿入しようとしています。私はすべてドキュメントのようにしましたが、引き続き例外を取得し続けます。
[Symfony\Component\Debug\Exception\FatalThrowableError]
Type error: Argument 1 passed to AppBundle\Writers\TeamsWriter::__construct() must be an instance of Doctrine\ORM\EntityManager, none given, called in /ho
me/admin_u/Documents/test_project/src/AppBundle/Command/ParseMatchesCommand.php on line 54
Doctrineをサービスクラスに挿入しないのはなぜですか?
サービス
private $entity_manager;
/**
* TeamsWriter constructor.
* @param EntityManager $entity_manager
*/
public function __construct(EntityManager $entity_manager)
{
$this->entity_manager = $entity_manager;
}
Services.yml
services:
teams_writer:
class: AppBundle\Writers\TeamsWriter
arguments: ["@doctrine.orm.entity_manager"]
あなたがサービスBを使用していませんでした
protected function execute(InputInterface $input, OutputInterface $output)
{
$parser = new TeamsParser();
$data = $parser->execute();
$writer = new TeamsWriter();
$writer->store($data);
}
あるいは、パーサーとライターを直接コマンドに挿入して、 ntainer。 – Cerad
ContainerAwareCommandは良い方法です。 – COil