Sylius - 如何将FactoryInterface注入我自己的工厂

时间:2016-09-08 12:15:22

标签: sylius

我试图为Sylius形成自己的工厂。

搜索Sylius组件我发现了怎么做。

这是我的工厂:

class CommentFactory implements CommentFactoryInterface
{
/**
 * @var FactoryInterface
 */
 private $factory;

/**
 * @param FactoryInterface $factory
 */
public function __construct(FactoryInterface $factory)
{
    $this->factory = $factory;
}

/**
 * {@inheritDoc}
 */
public function createNew()
{
    return $this->factory->createNew();
}

public function createWithPost($postId)
{
    $comment = $this->createNew();
    $comment->setPost($postId);

    return $comment;
}
}

我无法找到如何注入Sylius的FactoryInterface。

我执行了php app/console debug:container | grep factory来搜索服务,但没有出现:(

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

据我所知,您在服务申报方面存在问题。我对吗?

对于您在上面提供的课程,您必须将其注册为服务,该服务将修饰默认课程。它是一个常规服务声明,在xml中具有额外的ngOnInit() { if(!this.transaction) { this.transaction = new Transaction(); } } 属性。

decorates

您可以找到有关服务装饰的其他阅读in symfony documentation。但是,在Sylius文档中,您可以找到信息how to inject your custom factory to controller