如何从使用方法GET的表单中获取数据

时间:2015-04-01 11:57:51

标签: php symfony symfony-2.1 symfony-2.3 symfony-2.4

我的表单有问题。我试图从表单中获取值但没有结果。我的表格是:

<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>

我的控制器:

$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);

我的产品库:

 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是NULL但是如果我在aFilter中使用POST方法,我从表单中获取值。请帮帮我!

1 个答案:

答案 0 :(得分:0)

表单配置中的方法需要匹配HTTP请求的方法。默认情况下,表单使用POST方法,因此您需要告诉它使用GET。

将其放在buildForm()方法中:

$builder->setMethod('GET');

然后在Twig模板中,您可以使用form_start()函数,它会自动将方法设置为GET。