表单绑定无法获取请求

时间:2015-12-17 15:20:07

标签: php forms symfony silex

这是我的symfony表单

class TeradataType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
     $builder
       ->add('emplId','text',array(
        'attr'=>array(
            'class'=>'filter-control'
                )
       ))
       ->add('tmMbrUid','text',array(
        'attr'=>array(
            'class'=>'filter-control'
                )
       ))
       ->add('fstNm','text',array(
        'attr'=>array(
            'class'=>'filter-control'
                )
       ))
       ->add('lstNm','text',array(
            'attr'=>array(
                'class'=>'filter-control'
                )
       ));


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

public function configureOptions(OptionsResolver $resolver) {
    $resolver->setDefaults(array(
        'csrf_protection' => false
    ));
}
}

以下是我打印初始表单的方式:

 {{ form_start(form, {'action':path('teradataResult'),'method':'GET','attr': {'novalidate': 'novalidate','id':'form','class':'form-horizontal'}}) }}
                        {{ form_widget(form) }}

                        <div class="form-group">
                            <div class="col-sm-offset-2 col-sm-10">
                                <button type="submit" class="btn btn-primary">Submit</button>
                                <button type="reset" class="btn btn-warning">Clear</button>
                            </div>
                        </div>
                    {{ form_end(form) }}

这是我的控制器类:

 $form= $app['form.factory']    ->createBuilder(TeradataType::class)
                                    ->getForm();
    $form->handleRequest($request);
    if ($form->isValid()) {
        var_dump($form->getData());
    }

当我使用POST请求提交表单时,我得到表单数据和表单绑定工作但是当我使用GET请求时,我没有得到任何表单数据。如何解决这个问题?

更新: 我替换了这行代码:

$form->handleRequest($request);

$form->submit($request);

它也适用于get请求。但是根据文档$ form-&gt; submit($ request)已弃用,将在symfony 3中删除(http://symfony.com/doc/current/cookbook/form/direct_submit.html#passing-a-request-to-form-submit-deprecated

1 个答案:

答案 0 :(得分:1)

您可以在致电robin [at] stormpath [dot] com时添加setMethod('GET')。这应该可以解决问题:

createBuilder()