2017-01-13 37 views
1

(並對不起,我的英文版)Silex渲染表單 - ChoiceType

我正在開發一個Silex項目,我開始使用表單。

沒有形式,我有這樣的事情: Image of choicesType

而且使用的形式,我想有一點相同(的選擇

末與形式我有這樣的:

ImageAfterChoicesTypeForm

正如你所看到的渲染並不大。

我希望得到這樣幾件事情:

<option value="1">Méthode</option> 
<option value="2">Marketing</option> 
<option value="3">Production</option> 

在代碼層,我有很簡單的東西( 我開始對形式,是放縱哈哈): 控制器:

public function add(Application $app, Request $request) { 
     if (! $app['security.authorization_checker']->isGranted('ROLE_ADMIN')) { 
      return new Response('Access Denied!', 403); 
     } 
     $repo = new DepartementRepository($app); 
     $departements = $repo->getAllDepartements(); 

     $data = []; 
     $erreurs = []; 
     $form = $app['form.factory']->createBuilder(FormType::class, $data) 
     ->add('nom',null,array('label' => 'Nom :')) 
     ->add('prenom',null,array('label' => 'Prenom :')) 
     ->add('departement_id',ChoiceType::class,array('choices' => $departements,'label' => 'Departement :')) 
     ->add('ville',null,array('label' => 'Ville :')) 
     ->add('salaire',null,array('label' => 'Salaire :')) 
     ->add('date_embauche',null,array('label' => 'Date d\'embauche :')) 
     ->getForm(); 


     $form->handleRequest($request); 

     if ($form->isValid()) 
     { 
      $data = $form->getData(); 
     } 
     return $app['twig']->render('employe/new.html.twig', array('form' => $form->createView(),'erreurs'=> $erreurs)); 
    } 

如果我甩我的$個省變數,我有這個:

array:4 [▼ 
    0 => array:2 [▼ 
    "id" => "2" 
    "nom_dep" => "Marketing" 
    ] 
    1 => array:2 [▼ 
    "id" => "3" 
    "nom_dep" => "Méthode" 
    ] 
    2 => array:2 [▼ 
    "id" => "1" 
    "nom_dep" => "Production" 
    ] 
    3 => array:2 [▼ 
    "id" => "4" 
    "nom_dep" => "Recherche et developpement" 
    ] 
] 

而我的觀點:

<form action="#" method="post"> 
    {{ form_widget(form) }} 
    <input type="submit" name="submit" /> 
</form> 

之前,我這樣做:

{% for departement in departements %} 
      <option value="{{ departement.id }}" 
      {% if donnees.departement_id is defined and departement.id == donnees.departement_id %}selected{% endif %}> 
        {{ departement.nom_dep }} 
      </option> 
{% endfor %} 

但我不知道如何與形式做到這一點。

任何幫助,歡迎。 謝謝!

回答

0

ChoiceType需要一個數組作爲參數:

陣列的風格(如當前的回購)

$departements = $repo->getAllDepartements(); 
$departementChoices = []; 
foreach($departements as $departement) { 
    $departementChoices[$departement["id"]] = $departement["nom_dep"] 
} 

對象樣式

$departements = $repo->getAllDepartements(); 
$departementChoices = []; 
foreach($departements as $departement) { 
    $departementChoices[$departement->getId()] = $departement->getLabel() 
} 
+0

這是''$ departementChoices [$ DEPARTEMENT [「身份證「]] = $ departement [」nom_dep「]'' 但它的工作原理!非常感謝 ! –