Sylius - 如何将 FactoryInterface 注入我自己的工厂
Sylius - How to inject FactoryInterface to my own Factory
我正在尝试为 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
搜索服务但是没有出现:(
有什么建议吗?
据我了解,您对服务声明有疑问。我对吗?
对于您在上面提供的class,您必须将其注册为一项服务,这将装饰一个默认服务。这是一个常规服务声明,在 xml 中带有附加的 decorates
属性。
<service id="app.custom_factory.comment" class="App\Factory\CommentFactory" decorates="app.factory.comment">
<argument type="service" id="app.custom_factory.comment.inner" />
</service>
您可以找到一些关于服务修饰的额外阅读 in symfony documentation. In Sylius documentation however, you can find an information how to inject your custom factory to controller。
我正在尝试为 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
搜索服务但是没有出现:(
有什么建议吗?
据我了解,您对服务声明有疑问。我对吗?
对于您在上面提供的class,您必须将其注册为一项服务,这将装饰一个默认服务。这是一个常规服务声明,在 xml 中带有附加的 decorates
属性。
<service id="app.custom_factory.comment" class="App\Factory\CommentFactory" decorates="app.factory.comment">
<argument type="service" id="app.custom_factory.comment.inner" />
</service>
您可以找到一些关于服务修饰的额外阅读 in symfony documentation. In Sylius documentation however, you can find an information how to inject your custom factory to controller。