2015-12-02 4 views
1

Я новичок в symfony2.Форма никогда не отправляется в symfony2

Я работаю над функциональностью поиска и вот мой код в моем indexAction:

/** 
* @Route("/admin/users/", name="userspage") 
*/ 
public function indexAction(Request $request) 
{ 

    $repo = $this->getDoctrine()->getRepository('AppBundle:User'); 
    $users = $repo->getUsers(); 

    //create 
    $form = $this->createForm(new SearchType()); 

    if ($form->handleRequest($request)->isSubmitted()) { 
     if($form->isValid()){ 
      return new Response("Valid"); 
     } else { 
      return new Response("Not Valid"); 
     }  
    } 

    return $this->render('AppBundle:User:index.html.twig', array(
     'base_dir' => realpath($this->container->getParameter('kernel.root_dir').'/..'), 
     'active_nav' => 'users', 
     'users' => $users, 
     'form' => $form->createView(), 
    )); 
} 

Вот мой FormType:

class SearchType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     parent::buildForm($builder, $options); 

     $builder->add('term', 'text' , array('attr'=> array('placeholder'=> 
     'Enter name to search', 'class' => 'form-control'), 
     'label' => 'Search: ' 
     )); 
    } 

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

Вот как я сделать вид:

<div class="row row-padding no-gutter"> 
     <form action="{{ path('userspage') }}" method="GET"> 
      <div class="col-lg-1"> 
       {{ form_label(form.term) }} 
      </div> 
      <div class="col-lg-4"> 
       {{ form_widget(form.term) }} 
      </div> 
      <div class="col-lg-4"> 
       <button type="submit" class="btn btn-default"><i class="fa fa-search"></i> Search</button> 
      </div> 
      {{ form_rest(form) }} 
     </form> 
    </div> 

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

Спасибо.

+2

Ваша форма = «GET» справа:? Почему вы не следуете документам .. [Symfony2 Forms] (http://symfony.com/doc/current/book/forms.html#changing-the-action-and-method-of-a-form) – Svetoslav

+0

Представляет ли передача в браузере? Посмотрите вкладку сети в отладчике браузеров. – RoToRa

ответ

2

Метод формы POST по умолчанию. Вы можете использовать ->setMethod('GET') или добавить method => 'GET' в параметры, чтобы ваша форма использовала метод GET.

Также рекомендуется использовать {{ form_start(form) }} и {{ form_end(form) }} вместо жестко обозначенных тегов html, так как это гарантирует, что ваш метод в порядке.

Для получения дополнительной информации см. http://symfony.com/doc/current/book/forms.html#changing-the-action-and-method-of-a-form.