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.

40
demandé sur MARTIN Damien 2013-06-02 17:15:53

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();
}
78
répondu lifo 2017-09-26 14:14:40

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();
7
répondu Farid Movsumov 2015-08-28 12:23:56