2016-09-08 2 views
0

Я пытаюсь создать свою собственную фабрику для формы Sylius.Sylius - Как ввести FactoryInterface в мою собственную фабрику

Поиск в компонентах 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 искать службу, но не появляется :(

Любое предложение?

ответ

2

Насколько я понял, у вас есть проблемы с декларацией службы. Я прав?

Для класс, который вы указали выше, вам необходимо зарегистрировать его как услугу, которая будет украшать по умолчанию. Это регулярное объявление службы с дополнительным атрибутом 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> 

Дополнительная информация об украшении сервировки вы найдете in symfony documentation. Однако в документации Sylius вы можете найти информацию how to inject your custom factory to controller.

+0

Выглядит хорошо, плохо попробуйте завтра и скажите, как это работает :) Спасибо lchrusciel –

+0

Работает отлично. Большое спасибо @lchrusciel –