Sylius - Как внедрить FactoryInterface в мою собственную 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;
}
}
Я не могу найти, как ввести FactoryInterface Sylius.
Я казнил php app/console debug:container | grep factory
искать сервис, но не появляется:(
Любое предложение?
1 ответ
Насколько я понял у вас проблема с декларацией сервиса. Я прав?
Для класса, который вы указали выше, вы должны зарегистрировать его как сервис, который будет украшать сервис по умолчанию. Это обычная сервисная декларация с дополнительными decorates
атрибут в XML.
<service id="app.custom_factory.comment" class="App\Factory\CommentFactory" decorates="app.factory.comment">
<argument type="service" id="app.custom_factory.comment.inner" />
</service>
Некоторое дополнительное чтение по оформлению сервисов вы можете найти в документации Symfony. Однако в документации Sylius вы можете найти информацию о том, как внедрить вашу собственную фабрику в контроллер.