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

Angular Discussion :

Binding Angular et initialisation des champs d'un formulaire Symfony


Sujet :

Angular

  1. #1
    Membre confirmé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Points : 528
    Points
    528
    Par défaut Binding Angular et initialisation des champs d'un formulaire Symfony
    Bonjour,

    J'essaie actuellement de créer un formulaire pour une entité Tutorial avec un routage entièrement géré côté serveur.

    Pour se faire, j'ai mon formulaire construit depuis le serveur avec Symfony :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
       public function buildForm(FormBuilderInterface $builder, array $options)
       {
          $builder->add('title');
          $builder->add('level', EntityType::class, array(
             'class' => 'MyBundle:TutorialLevel',
             'choice_label' => 'name'
          ));
     
          $builder->add('submit', SubmitType::class);
     
          $builder->setAction($options['action']);
       }
    Ma vue Twig ressemble alors à ça, avec un binding AngularJS :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <div class="row">
       <div id="content" class="col-md-9" ng-controller="FormController">
             {{ form_start(form, {'attr': {'id': 'registerForm'}}) }}
             {{ form_row(form.title, {'attr': {'ng-model':'tutorial.title'}}) }}
             {{ form_end(form) }}
       </div>
    </div>

    Mais à l'édition, mon champ title s'initialise d'abord correctement (via la création depuis l'action Symfony) puis est écrasé par le contexte Angular après un court instant. Il faudrait donc que je puisse, au chargement du module Angular, récupérer les valeurs initialisés pour que mon contexte soit synchronisé.

    1) Dois-je faire une directive pour venir parcourir les éléments et initialiser le contexte du Controller Angular ?

    2) Avec le 1), on dépend beaucoup de la vue pour parcourir le DOM, peut être que ce serait mieux de faire tout le template du form dans la directive aussi ?
    Dans ce cas, il faudrait quand même un champ caché Div qui récupère les valeurs par défaut du Tutorial pour que la directive puisse y avoir accès non ?

    3) Vous allez me dire, pourquoi utiliser AngularJS et pas simplement Bootstrap et jquery avec Symfony ? En fait c'était surtout pour me former mais s'il y a pas de moyen simple sans bidouiller pour faire ce genre de chose ça se discute oui!

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Désolé de ne pas répondre plus précisemment, mais AngularJs étant un framework, et Symphony étant un framework, les deux entrent en collision et créent des redondances.

    Moi, je me sers de php uniquement pour le back end, et tout le front end est fait avec angularJs, routing et j'en passe.

Discussions similaires

  1. [CR XI] Initialiser des champs de saisie par la semaine précédente
    Par juju05 dans le forum Formules
    Réponses: 1
    Dernier message: 29/05/2013, 19h17
  2. initialiser des champs de type de contenue de tache personnalise
    Par samworkflow dans le forum SharePoint
    Réponses: 1
    Dernier message: 18/05/2009, 11h19
  3. Initialisation des champs "sujet" et "texte" d'une E-Mail
    Par j.p.mignot dans le forum Dreamweaver
    Réponses: 2
    Dernier message: 29/12/2007, 15h40
  4. Réponses: 2
    Dernier message: 06/11/2007, 09h14
  5. Réponses: 5
    Dernier message: 17/05/2005, 09h34

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