2011-08-13 67 views
3

我正在使用窗體(filterForm)過濾實體的一個樹枝視圖。Symfony2:實體字段(html選擇)設置SELECTED項目

'filterForm'只有'實體'類型的字段。在視圖上顯示一個HTML-SELECT-OPTIONs標籤。

當用戶改變選擇,相同的控制器被稱爲做壞事的東西來過濾實體列表。

所有工作正常,但我需要顯示與篩選列表的值的SELECT字段。這是問題,我不知道該怎麼做。

領域的代碼從index.html.twig了一下:

{{ form_widget(personalFilterForm.personaFiltrarMail, 
         { 'empty_value': 'Todos', 
          'attr': {'selected': personaFiltrarMail, 
            'onChange': 'javascript:document.filtrado.submit()' } 
         } 
       ) 
    }} 

那代碼生成這個HTML代碼:

<select name="test_onebundle_type[personaFiltrarMail]" id="test_onebundle_type_personaFiltrarMail" 
onchange="javascript:document.filtrado.submit()" 
required="required" selected="[email protected]"> 
     <option value="">Todos</option> 
     <option [email protected]">Name One</option> 
     <option [email protected]">Name Two</option> 
     <option [email protected]">Name three</option> 

這裏真正的問題(我認爲)是我知道如何訪問OPTIONS子元素來在一個具體的OPTION項上設置de SELECTED屬性。

謝謝。

===控制器===

這裏的 '控制器' ......

這四個編號的 '回聲' 給我的郵件: '[email protected]' 但SELECT HTML標記始終位於第一個OPTION標籤上。

class HorasController extends Controller 
{ 
    /** 
    * Lists all Horas entities. 
    * 
    * @Route("/", name="horas") 
    * @Template() 
    */ 
    public function indexAction() 
    { 
     $em = $this->getDoctrine()->getEntityManager(); 

     $personas = $em->getRepository('PtGhorgaBundle:Personal')->findAll(); 
     $personalFilterForm = $this->createForm(new PersonalFilterType(), $personas); 

     $request = $this->getRequest(); 
     $formVars = $request->request->get('pt_ghorgabundle_type'); 
     $personaFiltrarMail = $formVars['personaFiltrarMail']; 
     //echo "1.- [".$personaFiltrarMail."]<br />"; 

     if (!isset($personaFiltrarMail) || $personaFiltrarMail=="") { 
      $entities = $em->getRepository('PtGhorgaBundle:Horas')->findAll();    
     } else { 
      $criterio = array('persona' => $personaFiltrarMail,);    
      $entities = $em->getRepository('PtGhorgaBundle:Horas')->findBy($criterio); 
      $criterio = array('mail' => $personaFiltrarMail,);    
      $personaFiltrarMail = $em->getRepository('PtGhorgaBundle:Personal')->find($criterio)->getMail(); 
      echo "2.- [".$personaFiltrarMail."]<br />"; 
      $personalFilterForm->personaFiltrarMail = $personaFiltrarMail; 
      echo "3.- [".$personaFiltrarMail."]<br />"; 
      echo "4.- [".$personalFilterForm->personaFiltrarMail."]<br />"; 
     } 

     return array('entities' => $entities, 
        'personas' => $personas, 
        'personalFilterForm' => $personalFilterForm->createView(), 
        'personaFiltrarMail' => $personaFiltrarMail, 
        ); 
    } 

回答

2

在您的數據中,您可以將屬性personaFiltrarMail設置爲相應的值。

例如,在你的控制器:

$object = new Object(); 
$object->personaFiltrarMail = '[email protected]'; 
$form = $this->createFormBuilder($object); 

然後渲染你的模板。

+0

嗨@Jules,感謝您的回答,但沒有運氣與此。我已經添加了控制器/ indexAction的問題。 – ferpega

2

我發現它:

只是belown 回聲 「4 .....」 行

$data = array('personaFiltrarMail'=> $personaFiltrarMail); 
    $personalFilterForm->setData($data); 

問候。

相關問題