Symfony2-Utilisation Du Générateur De Formulaire Sans Entité Attachée
J'ai utilisé le générateur de formulaire avec Symfony2, et je le trouve assez agréable. Je me retrouve à vouloir créer une page de recherche avec une série de boîtes en haut pour filtrer les résultats de recherche. J'ai trois entités différentes à ce jour (juges, interprètes, avocats). Je voudrais que les utilisateurs puissent entrer des noms partiels ou complets, et qu'ils recherchent toutes les entités. Je peux gérer la partie de recherche réelle, mais la génération de générateur de formulaire est ce qui me pose des problèmes.
Quoi J'essaie de faire est de créer un formulaire non attaché à une entité particulière. Tous les tutoriels et la documentation que j'ai lus sur le site Symfony agissent comme s'il devait être attaché à une entité par défaut. Je me demande si je devrais simplement l'attacher à n'importe quelle entité et simplement définir chaque champ de texte sur mapped = false, s'il s'agit d'une instance où je devrais simplement coder le formulaire moi-même, ou s'il y a un moyen de le faire dans form builder.
2 réponses
N'utilisez pas de formType et vous n'avez pas besoin d'attacher une entité pour utiliser le Générateur de formulaire. Utilisez simplement un tableau à la place. Vous avez probablement négligé cette petite section dans la documentation de Symfony: http://symfony.com/doc/current/form/without_class.html
<?php
// inside your controller ...
$data = array();
$form = $this->createFormBuilder($data)
->add('query', 'text')
->add('category', 'choice',
array('choices' => array(
'judges' => 'Judges',
'interpreters' => 'Interpreters',
'attorneys' => 'Attorneys',
)))
->getForm();
if ($request->isMethod('POST')) {
$form->handleRequest($request);
// $data is a simply array with your form fields
// like "query" and "category" as defined above.
$data = $form->getData();
}
Vous pouvez également utiliser la méthode createNamedBuilder
pour créer le formulaire
$form = $this->get('form.factory')->createNamedBuilder('form', 'form')
->setMethod('POST')
->setAction($this->generateUrl('upload'))
->add('attachment', 'file')
->add('save', 'submit', ['label' => 'Upload'])
->getForm();