2012-06-01 3 views
1

Прежде всего, спасибо всем, кто взглянул на эту проблему. У меня есть FormType, например userFormType.symfony2 render часть формы

class UserFormType extends AbstractType{ 
    public function buildForm(FormBuilder $builder, array $options) 
    { 
     $builder->add('address','collection', ....) 
       ->add('group','entity',....) 
       ->add('companies','collection',....); 
     ... 
    } 

} 

Итак, вы видите, что у меня есть две коллекции в пользовательской форме. Я создаю форму и устанавливаю компании. Когда я хочу изменить ТОЛЬКО информацию о компаниях и адресе, но не касаться группы. Поэтому я должен отображать форму пользователя, но не некоторые формы компании или формы адресов. поэтому я пишу контроллер так:

$user= $this->get('security.context')->getToken()->getUser(); 
    $form =$this->createForm(new UserForm(),$user); 
    $request = $this->get('request'); 
    if ('POST' == $request->getMethod()) { 
     $form->bindRequest($request); 
     if ($form->isValid()) { 
      $em = $this->getDoctrine()->getEntityManager(); 
      $em->persist($user); 
      $em->flush(); 
      .... 
     } 

    } 

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

Argument 1 passed to ... User->setGroup() must be an instance of Group ... null given 

Так я спрашиваю, что я должен делать?

+0

Почему вы добавляете группу в форму, если вы не хотите ее редактировать? –

ответ

1

ошибка конкретно потому, что ваше определение метода в пользователе, вероятно:

public function setGroup(Group $group); 

но для того, чтобы установить его нулевым это необходимо будет:

public function setGroup(Group $group = null); 

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

+1

Большое спасибо. Группа не должна быть нулевой. и у пользователя уже есть группа. Например, я хочу поделиться формой регистра с формой редактирования. поэтому для формы регистра нужна опция группы, но не форма редактирования. Я понимаю, что вы предлагаете мне создать другую форму для редактирования, поэтому проблем не будет. Это то, что я сделал на прошлой неделе. Но я действительно хочу знать, что мы не можем просто отображать часть формы, и когда мы пытаемся связать запрос, элементы, которые не отображаются, не будут установлены в null, если у меня уже есть что-то в объекте для привязки? как мой пользователь. – ferdinandfly

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