Silex визуализировать форму — ChoiceType

(и извините за мой английский)

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

Без формы у меня есть что-то вроде этого:
Изображение 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));
}

если я дам свою переменную $ departements, у меня есть это:

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

Но я не знаю, как это сделать с формой.

Любая помощь приветствуется.
Спасибо !!

1

Решение

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]