2016-01-27 6 views
0

Я создал простой настраиваемое полеSymfony2 Мой пользовательский тип поля формы не заполняется данными из объекта

class InputWithDescriptionType extends AbstractType 
{ 
public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(array(
     'description'   => '', 
    )); 

} 

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->setAttribute('description', $options['description']) 
    ; 
} 

public function buildView(FormView $view, FormInterface $form, array $options) 
{ 
    $view->vars['description'] = $options['description']; 
} 

public function getParent() 
{ 
    return 'text'; 
} 

public function getName() 
{ 
    return 'input_with_description'; 
} 
} 

и добавить его в моей форме

$builder 
     ->add('name') 
     ->add('about', 'input_with_description', array(
      'description' => "description", 
      'label' => "label", 
     )) 

При подаче формы все данные хранятся правильно но когда я пытаюсь редактировать объект, используя эту форму, пользовательские поля пусты. Где может быть проблема?

ответ

1
public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => 'AppBundle\Entity\Product' 
     )); 
    } 

Заменить «AppBundle \ Entity \ Product» на класс сущности.

+0

Вы имеете в виду, что я должен добавить это в тип поля или форму? У меня это в моем классе. –

+0

Вам нужно указать имя объекта symfony, откуда он будет заполнять данные в элементах формы. – Anil

+0

У меня этот метод в моем классе основной формы и нестандартные поля заполняются просто отлично. Только пользовательские пустые. Когда я попытался добавить его в тип поля, я получил «Данные вида формы, как ожидается, будут экземпляром класса AppBundle \ Document \ Brief, но являются строкой (n). Вы можете избежать этой ошибки, установив опцию« data_class » к null или добавлением трансформатора вида, который преобразует строку (n) в экземпляр AppBundle \ Document \ Brief. " –