2013-11-29 4 views
0

Я создаю форму с полями на основе сущности, я попытался установить значения по умолчанию, используя параметр данных, и предпочтительный выбор после ответов на заданные вопросы here и here, я попробовал диспетчер инъецирования сущности из контроллера и извлек сущность в тип формы, я также попытался напрямую вставить объект ... все еще не работает. Интересно, вызвана ли проблема проблемой query_builder? Я перехожу к опции при создании поля (я использовал его, чтобы избежать дубликатов, поскольку group_by не делает этого трюка). вот код формы: Чтобы увидеть весь класс:
http://pastebin.com/sx4du0EbSymfony2 Значение по умолчанию для поля формы на основе объекта

приведен пример подал:

   ->add('quantite', 'entity', array(
       'class' => 'CcWebBundle:Brochure', 
       'property' => 'quantite', 
       'multiple' => false, 
       // utilisation d'une requête pour filtrer les resultats 
       'query_builder' => function(EntityRepository $er) { 
            return $er->createQueryBuilder('u') 
               ->groupBy('u.quantite'); 
            } 
       )) 

ответ

0

Я думаю, что главная проблема заключается в самой форме. Вы уверены, что каждое свойство вашего объекта «Брошюра» является экземпляром брошюры?

->add('quantite', 'entity', array(
      'class' => 'CcWebBundle:Brochure', 
      'property' => 'quantite', 
      'multiple' => false, 
      // utilisation d'une requête pour filtrer les resultats 
      'query_builder' => function(EntityRepository $er) { 
           return $er->createQueryBuilder('u') 
              ->groupBy('u.quantite'); 
           } 
      )) 

Возможно, вы хотите установить здесь величину! Если это так, что должно быть число:

->add(
    'quantite', 
    'number' 
) 

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

public function newAction() 
{ 
    $brochure = new Brochure(); 
    $brochure->setQuantite(5); 
    $form = $this->createForm(new BrochureType(), $brochure); 
    // .. 
} 
+0

спасибо за ваш ответ, но количество и все поля, все извлекаются из Databse и добавляет к форме будет отображаться как выбранный, таким образом форма отображает все возможные варианты. –

+0

Устанавливая тип формы 'number' в поле количества, это не означает, что он не будет извлечен из базы данных, это просто означает, что отображаемый элемент формы будет вместо