2015-04-08 5 views
3

вот мой класс работы с Symfony DI:Иметь FormType data_class с конструктором DI (Symfony 2,3)

class Car { 

    protected $wheel; 

    public function __construct(Wheel $wheel) // We inject the service 
    { 
     $this->wheel = $wheel; 
    } 
} 

Я хочу работать в качестве data_class для SF2 FormType:

public function setDefaultOptions(OptionsResolverInterface $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => 'Car', 
    )); 
} 

Проблема здесь: https://github.com/symfony/Form/blob/2.3/Extension/Core/Type/FormType.php#L135-L141

FormType исполняет new на data_class (Car) без параметров, поэтому все материалы DI сломаны.

Как я могу справиться с этим? Возможно ли это? Спасибо заранее!

+0

Вы не должны определять контейнер DI внутри класса сущности. http://stackoverflow.com/questions/13152610/get-service-container-from-entity-in-symfony-2-1-doctrine –

+0

Действительно, да, спасибо за примечание! Я ищу обходное решение для этого случая :) – grena

ответ

0

Итак, решение было инициализировать модель класса данных, и передать его в виде:

// Create an instance of the car model 
$car = $this->carFactory()->create($wheel); 

// Pass it to the form as data while building it 
$form = $this->formFactory->create('MyFormType', $car); 

// Add the car field 
$form->add('car', $car->getFormType(), $car->getFormOptions()); 

Таким образом, data_class никогда не нулевой, так что нет new вызывается FormType.

 Смежные вопросы

  • Нет связанных вопросов^_^