Php Symfony,提交后在搜索表单中保留Get参数

Php Symfony,提交后在搜索表单中保留Get参数,php,symfony,Php,Symfony,你好, 我已经使用GET方法创建了一个搜索表单,对于我的索引操作,该表单包含虚拟字段 我创建了索引操作内部搜索的逻辑 我的问题是,当我提交表单时,所有输入值都变为空 我想要的是在表单输入中保留作为参数传递的值 这是我的表单类型: public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('title', TextType::class,

你好,

我已经使用GET方法创建了一个搜索表单,对于我的索引操作,该表单包含虚拟字段

我创建了索引操作内部搜索的逻辑

我的问题是,当我提交表单时,所有输入值都变为空

我想要的是在表单输入中保留作为参数传递的值

这是我的表单类型:

    public function buildForm(FormBuilderInterface $builder, array $options) {
    $builder
        ->add('title', TextType::class, array(
            'required' => false,
            'attr' => array(
                'placeholder' => 'Chercher',
            )
        ))
        ->add('client', EntityType::class, array(
            'required' => false,
            'class' => 'AppBundle:Person',
            'placeholder' => 'Choisir client',
            'attr' => array(
                'class' => 'select2',
            )
        ))
        ->add('date_start', DateTimeType::class, array(
            'required' => false,
            'input' => 'datetime',
            'widget' => 'single_text',
            'format' => 'dd-MM-yyyy',
            'inherit_data' => true,
            'attr' => array(
                'name' => 'date_start',
                'class' => 'datepicker',
                'placeholder' => 'Date début',
                'value' => ''
            )
        ))
        ->add('date_end', DateTimeType::class, array(
            'required' => false,
            'input' => 'datetime',
            'widget' => 'single_text',
            'format' => 'dd-MM-yyyy',
            'inherit_data' => true,
            'attr' => array(
                'name' => 'date_end',
                'class' => 'datepicker',
                'placeholder' => 'Date fin',
                'value' => ''
            )
        ))
    ;
}
索引作用:

    public function indexAction(Request $request)
{
    $getArgs = $request->query->get('order');
    dump($getArgs);
    $form = $this->createForm('AppBundle\Form\Search\OrderType', new Order(), array('get' => $getArgs));
    $form->handleRequest($request);

    $repo = $this->getDoctrine()->getRepository('AppBundle:Order');
    $query = $getArgs ? $repo->findAllMatched($q) : $repo->createQueryBuilder('o');

    $paginator = $this->get('knp_paginator');
    $orders = $paginator->paginate($query);

    return $this->render('AppBundle:Order:index.html.twig', array(
        'orders' => $orders,
        'form' => $form->createView(),
    ));
}

任何建议都很好。

目前,我通过以下方式解决了问题:

            <div class="nav box-search">
            <form method="GET" class="form-inline">
                <div class="pull-right">
                     <button type="submit" class="btn btn-default">{{ 'actions.search' | trans }}</button>
                </div>
                <div class="pull-left">
                    {% set params = app.request.query.all %}
                    {{- form_widget(form.title, { 'attr': {'value': params.order.title| default('')} }) -}}
                    {{ form_widget(form.client,  {value: params.order.client| default('') }) }}
                    {{- form_widget(form.date_start, { 'attr': {'value': params.order.date_start| default('')} }) -}}
                        <i class="fa fa-exchange"></i>
                    {{- form_row(form.date_end, { 'attr': {'value': params.order.date_end| default('')} }) -}}
                </div>
            </form>
        </div>

{{'actions.search'| trans}}
{%set params=app.request.query.all%}
{{-form_小部件(form.title,{'attr':{'value':params.order.title{124; default('''}}})-}
{{form_小部件(form.client,{value:params.order.client}默认('''})}
{{-form_小部件(form.date_start,{'attr':{'value':params.order.date_start{124; default('''}}})->}
{{-form_行(form.date_-end,{'attr':{'value':params.order.date_-end{124; default('''}}})->}

这不是一个糟糕的解决方案,但我希望在FormType中配置此参数。

目前,我通过以下方式解决了问题:

            <div class="nav box-search">
            <form method="GET" class="form-inline">
                <div class="pull-right">
                     <button type="submit" class="btn btn-default">{{ 'actions.search' | trans }}</button>
                </div>
                <div class="pull-left">
                    {% set params = app.request.query.all %}
                    {{- form_widget(form.title, { 'attr': {'value': params.order.title| default('')} }) -}}
                    {{ form_widget(form.client,  {value: params.order.client| default('') }) }}
                    {{- form_widget(form.date_start, { 'attr': {'value': params.order.date_start| default('')} }) -}}
                        <i class="fa fa-exchange"></i>
                    {{- form_row(form.date_end, { 'attr': {'value': params.order.date_end| default('')} }) -}}
                </div>
            </form>
        </div>

{{'actions.search'| trans}}
{%set params=app.request.query.all%}
{{-form_小部件(form.title,{'attr':{'value':params.order.title{124; default('''}}})-}
{{form_小部件(form.client,{value:params.order.client}默认('''})}
{{-form_小部件(form.date_start,{'attr':{'value':params.order.date_start{124; default('''}}})->}
{{-form_行(form.date_-end,{'attr':{'value':params.order.date_-end{124; default('''}}})->}

这不是一个糟糕的解决方案,但我希望在FormType中配置此参数。

在会话中存储值,然后在下次需要显示表单时检索它们。我使用FormType对象生成的表单输入,我的模板文件上没有输入,因为我呈现{form},因此,将所有代码更改为html输入并在那里使用会话数据不是一个正确的想法!!不知道你刚才说了什么。是否要保留标题、客户和日期?将它们存储在会话中,并在控制器中创建时将它们馈送给表单。@Bouhkarim您能显示模板吗?将值存储在会话中,然后在下次需要显示表单时检索它们。我使用的是从formType对象生成的表单输入,我的模板文件中没有输入,因为我渲染了{{form},因此将所有代码更改为html输入并在其中使用会话数据不是一个正确的想法!!不知道您刚才说了什么。是否要保留标题、客户端和日期?将它们存储在会话中,并在您在控制器中创建表单时将其提供给表单。@Bouhkarim能否显示您的模板?