2015-05-30 4 views
0

как я могу получить атрибуты объекта, который я использую, чтобы построить эту форму: код контроллераSymfony: получить объект формы

$assistance1 = new Assistance(); 
$assistance1->setEtudiant($etudiant1); 
$form = $this->get('form.factory')->create(new AssistanceType(), $assistance1); 

функция buildform на классе Form

/** 
* @param FormBuilderInterface $builder 
* @param array $options 
*/ 
public function buildForm(FormBuilderInterface $builder, array $options) 
{ 

    $builder 
     ->add('present', 'checkbox',array(
      'required' => false, 
     )) 
    ; 
} 
+0

Можете ли вы уточнить? – Jacob

+0

Я хочу использовать атрибуты $ assist1 функции buildForm для определения метки для флажка что-то вроде: $ myobject = $ builder-> get ???(); $ value = $ myobject-> getAttribute(); – hamza

ответ

0

Вы можете добавить $this->assistance1; to AssistenceType и do new AssistenceType($assistence1); Но это не хороший дизайн imo.

class AssistenceType extends AbstractType 
{ 
    private $assistence1; 

    public function __construct($assistence1) 
    { 
     $this->assistence1 = $assistence1; 
    } 

    public function buidlForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('present', 'checkbox', array(
      'required' => false, 
      'label' => $this->assistence1->getEtudiant() 
     )); 
    } 
} 

и использовать его как этот

$form = $this->get('form.factory')->create(new AssistanceType($assistence1), $assistance1); 
+0

я не могу использовать это решение в этом случае (Сборник форм): общественная функция buildForm (FormBuilderInterface $ строителем, массив $ вариантов) { $ построитель -> добавить ('Contenu', 'текстовое поле') -> add ('date_seance', 'datetime') -> add ('assistances', 'collection', array ( 'type' => new AssistanceType(), )) ; } это другая форма, использующая эту форму. – hamza

+0

Вы можете использовать '$ assistence = $ options-> getData()' внутри метода buildForm, который я предполагаю. А затем 'label => $ assistence-> getEtudiant()'. – Jacob

0

Вы должны иметь в виду, что построение формы отсоединяется от его данных. Если вам нужна форма для изменения на основе ее свойств, вам нужно будет реализовать различные типы прослушивателей событий или подписчиков. Подумайте об этом так: вам нужен только один строитель для многих форм.

Чтобы реализовать слушателя или подписчика в форме, вам, скорее всего, будет проще всего сначала объявить ваш тип формы как службы, а затем зарегистрировать службу, в которой вам нужно будет изменить поведение формы, и пометить ее как событие слушателя для формы. Это все в документах :)

Однако компонент формы Symfony имеет тенденцию быть одним из самых сложных, поэтому не стесняйтесь уточнять свою проблему немного больше, чтобы я мог помочь вам более эффективно.

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