IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Lier une méthode d'un controller à un form existant ?


Sujet :

Symfony PHP

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 107
    Points : 271
    Points
    271
    Par défaut Lier une méthode d'un controller à un form existant ?
    Bonjour à tous,

    Tout est dans le titre :

    Comment fait on pour lier et accéder aux données d'un formulaire existant depuis différentes méthodes lorsque l'on ne va pas l'envoyer ou modifier les données déjà renseignées par l'utilisateur (sans submit) ?

    Merci d'avance pour vos réponses

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Points : 396
    Points
    396
    Par défaut
    Tu peux tout à fait peupler et afficher un formulaire sans avoir de bouton submit, ni que ton controller prenne en compte une action POST éventuelle.

    Soit ton form est mappé à une entité, auquel cas tu instanties ton form avec ton entité, juste pour l'afficher.
    Soit il n'est pas mappé et tu peux utiliser setData :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $form->get('agreeTerms')->setData(true);

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 107
    Points : 271
    Points
    271
    Par défaut
    Bonjour Zevince

    Merci d'avoir répondu.

    Ce que je voulais savoir c'est comment faire référence à un formulaire existant depuis un controller, peut-on lui donner un nom pour le distinguer / rappeler depuis n'importe où ?
    Je sais comment créer une nouvelle instance et traiter le submit / request mais je n'arrive pas à faire référence à celui-ci dans plusieurs controllers indépendants...

    Ça doit être tout bête mais je n'ai pas trouvé d'information même dans la doc officielle....

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Points : 396
    Points
    396
    Par défaut
    Ah je n'avais pas bien compris alors.

    La doc est pourtant pas mal, sur ces points. Tu crées ton Form, classique :

    https://symfony.com/doc/current/form...g-form-classes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    // src/Form/Type/TaskType.php
    namespace App\Form\Type;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\Extension\Core\Type\DateType;
    use Symfony\Component\Form\Extension\Core\Type\SubmitType;
    use Symfony\Component\Form\Extension\Core\Type\TextType;
    use Symfony\Component\Form\FormBuilderInterface;
     
    class TaskType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options): void
        {
            $builder
                ->add('task', TextType::class)
                ->add('dueDate', DateType::class)
                ->add('save', SubmitType::class)
            ;
        }
    }
    Il est donc nommé et tu peux l'instancier dans n'importe quel controller.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    // src/Controller/TaskController.php
    namespace App\Controller;
     
    use App\Entity\Task;
    use App\Form\Type\TaskType;
    use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\HttpFoundation\Response;
     
    class TaskController extends AbstractController
    {
        public function new(Request $request): Response
        {
            $task = new Task();
            // ...
     
            $form = $this->createForm(TaskType::class, $task);
     
            return $this->render('task/new.html.twig', [
                'form' => $form,
            ]);
        }
    }

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 107
    Points : 271
    Points
    271
    Par défaut
    Merci d'avoir répondu mais là tu instancies de nouveau la classe du formulaire en le liant à une nouvelle instance d'entité (ça je sais faire...)

    Ce qu'il me faut c'est pouvoir nommer le formulaire de façon à ce qu'il soit appelable de n'importe où et pouvoir accéder à ce que contiennent tous ces champs depuis différents controllers.
    Il ne faut donc pas à mon avis faire appel à sa classe ce qui reconstruit un formulaire vide à chaque fois à moins que je me trompe ...

    Le formulaire existe déjà dans la page et je voudrais accéder à ses champs depuis différents controllers... dois-je le réinstancier sa classe à chaque fois ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Points : 396
    Points
    396
    Par défaut
    Je me disais aussi que c'était trop simple..
    Je ne comprends pas vraiment ton besoin, du coup.

Discussions similaires

  1. Réponses: 7
    Dernier message: 26/03/2011, 07h41
  2. [Affichage] Etablir une distance entre deux controls forms
    Par alavoler dans le forum Windows Forms
    Réponses: 1
    Dernier message: 23/05/2008, 11h38
  3. Réponses: 10
    Dernier message: 22/08/2007, 18h07
  4. Réponses: 5
    Dernier message: 14/12/2006, 16h50
  5. pb critère sql dans une requete basée sur controle d'un form
    Par STANDBOY dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 27/02/2006, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo