2017-01-13 15 views
1

(и извините за мой английский)Форма визуализации Silex - ChoiceType

Я работаю над проектом Silex и начинаю использовать форму.

Без формы, у меня есть что-то вроде этого: Image of choicesType

И используя форму Я хотел бы иметь то же самое (для выбора)

End с формой у меня есть это:

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 принимает массив в качестве параметра:

стиль Array (как текущего репо)

$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 [ "ID "]] = $ dedement [" nom_dep "]' ' Но это работает! Большое спасибо ! –

 Смежные вопросы

  • Нет связанных вопросов^_^