2015-04-01 4 views
2

J'ai un problème avec mon formulaire. J'ai essayé d'obtenir la valeur de la forme mais aucun résultat. Ma forme est:Comment obtenir des données à partir d'un formulaire utilisant la méthode GET

<form action="{{ path('show_product_category',{ 'id':category.getId(), 'name':category.getCategoryLink() }) }}" method="get" {{ form_enctype(form) }}> 
    {{ form_widget(form) }} 
    <input type="submit" class="btn btn-primary marg-left-20" value="Search"/> 
</form> 

Mon contrôleur:

$entity = new Product(); 
    $form = $this->createForm(new ProductType(), $entity); 
    $request = $this->getRequest(); 
    $form->handleRequest($request); 

    //Get filter array from search 
    if ($form->isValid()) { 
     $aFilter['iMinPrice'] = $form["min_price"]->getData(); 
     $aFilter['iMaxPrice'] = $form["max_price"]->getData(); 
    } 
    print_r($aFilter); 

Mon ProductRepository:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder->add('min_price', 'text', array('mapped' => false, 'label' => 'From :', 'attr'=> 
             array(
              'placeholder'=>'Max price', 
              'class'=>'form-control'))) 

      ->add('max_price', 'text', array('mapped' => false, 'label' => 'To :' , 'attr'=> 
             array(
              'placeholder'=>'Minim price', 
              'class'=>'form-control'))) 

      //->add('colors', 'choice', array('mapped' => false, 'choices' => Colors::getColors(), 'multiple' => TRUE, 'expanded' => TRUE)) 
    ; 
} 

aFilter est NULL mais si je en utilisant la méthode POST dans aFilter je reçois la valeur de la forme. Aidez-moi, s'il vous plaît!

+0

'$ form-> get ('min_price') -> getData()'? – stevenll

+0

Vous avez créé votre formulaire avec $ entity comme valeur, donc vos valeurs de formulaire sont mappées dans la variable $ entity. Appelez simplement vos méthodes de produit: $ entity-> getMinPrice(); $ entity-> getMaxPrice(); –

+0

J'ai modifié la question. Le prix min et max ne fait pas partie de l'entité. Je répète pour la méthode POST cela fonctionne mais pour GET ne fonctionne pas – TanGio

Répondre

0

La méthode dans la configuration de formulaire doit correspondre à la méthode de la requête HTTP. Par défaut, les formulaires utilisent la méthode POST, vous devez donc lui indiquer d'utiliser GET.

Mettre cela dans la méthode buildForm():

$builder->setMethod('GET'); 

Ensuite, dans le modèle Brindille, vous pouvez utiliser la fonction form_start() et il définira automatiquement la méthode à GET.