2016-10-01 22 views
1

嗨,Symfony的,請獲取搜索表單Argumments後提交

我已創建使用GET方法的搜索形式,我的indexAction,表單包含的虛擬域。

我創建了indexAction內搜索的邏輯。

我的問題是當我提交表單時,所有輸入值都變空了。

我要的是保持作爲變量,表單輸入傳遞的值

這裏是我的FormType:

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' => '' 
      ) 
     )) 
    ; 
} 

的的indexAction:

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(), 
    )); 
} 

任何建議是很好的。

+0

將值存儲在會話中,然後在下次需要顯示錶單時檢索它們。 – Cerad

+0

我使用formType對象生成的表單輸入,我沒有在我的模板文件上輸入,因爲我呈現{{form}},所以它不是一個合適的想法,將所有代碼更改爲html輸入並在那裏使用會話數據! –

+0

不知道你剛剛說了什麼。你想保留標題,客戶和日期?將它們存儲在會話中,並在您的控制器中創建它們時將它們提供給您。 – Cerad

回答

0

現在,我決定用這種方式問題:

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

這不是壞的解決方案,但我會是有這個參數在FormType配置。