2013-10-08 5 views
0

У меня есть простая формаSymfony2: Форма: данные связывают

$transformer = new ModuleToArrayTransformer($this->entityManager); 
    $builder->add('modules', 'collection', array(
     'type' => 'checkbox', 
     'required' => false, 
     'data' => $options['data'][0]->getModules(), 
    )) 
    ->add('save', 'submit', array(
     'label' => 'btn_update_and_edit_again', 
     'attr' => array(
      'class' => 'btn btn-primary' 
     ) 
    )) 
    ->addViewTransformer($transformer); 

И контроллер для него:

$em = $this->getDoctrine()->getManager(); 
$user = $this->get('security.context')->getToken()->getUser(); 

    $module = $em->getRepository('AcmeProjectBundle:Module') 
     ->findBy(
      array(
       'user' => $userId, 
       'project' => $projectId, 
      ) 
     ); 

    if (!$module) { 
     $module = $this->createAction($projectId, $userId); 
    } 

    $userData = $em->getRepository('AcmeSonataUserBundle:User')->find($userId); 
    $projectData = $em->getRepository('AcmeProjectBundle:Project')->find($projectId); 
    $form = $this->createForm(new ModuleType($em), $module, array('user' => $userData, 'project' => $projectData)); 
    if ($request->getMethod() == 'GET') { 
     if ($form->isValid()) { 
     } 

    } 
    return $this->render('AcmeProjectBundle:Module:edit.html.twig', 
     array(
      'form' => $form->createView(), 
      'projectId' => $projectId, 
      'userId' => $userId, 
     ) 
    ); 

форма связана с другой формой. Когда я нажимаю на флажок в первой форме, эта форма генерируется - правильно. Пока я не пытаюсь $form->bind($request);

Когда я пытаюсь связать запрос, он показывает что-н, как «Это неверное значение»

$_GET, кажется, хорошо

array (size=1) 
    'acme_projectbundle_module' => 
array (size=2) 
    'modules' => 
    array (size=8) 
     'stats' => string '1' (length=1) 
     'time' => string '1' (length=1) 
     'issues' => string '1' (length=1) 
     'metrics' => string '1' (length=1) 
     'timeLine' => string '1' (length=1) 
     'information' => string '1' (length=1) 
     'status' => string '1' (length=1) 
     'risks' => string '1' (length=1) 
    'save' => string '' (length=0) 

, а также $request переменная

Если форма выглядит точно так же, как у моего $_GET, спросите, в чем дело. м? Насколько я знаю, $ _GET должен содержать те же значения, что и поле $request->parameters. Как тогда должно быть похоже? В чем проблема?

ответ

0

Вы пытаетесь связать форму и проверить isValid, когда метод запроса GET i.e в случае, когда вы просто хотите отобразить форму для пользователя. И в этом случае вы обязаны получить ошибку

«Это неверное значение»

потому что $request не содержит каких-либо значений.

Таким образом, вы должны привязать форму только при отправке данных, а не при отображении формы.

+0

Я забыл добавить, что для тестового случая я делаю так: if ($ request-> getMethod() == 'GET' && count ($ _ GET)). Форма привязывается только тогда, когда я передаю значения. – user2739610

+0

Решение, данное здесь, может помочь: http://stackoverflow.com/questions/13161062/form-bind-not-binding-request-to-form-in-symfony-2-1fosrestbundle –

+0

Еще раз: getName возвращает 'acme_projectbundle_module' var_dump ($ _ GET) возвращает массив (size = 1) 'acme_projectbundle_module' var_dump ($ request) возвращает query -> parameters -> array (size = 1) 'acme_projectbundle_module' => Это правильно? Запрос go также запрос поля -> параметры -> массив (размер = 0) пуст – user2739610

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