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 :
Ma vue Twig ressemble alors à ça, avec un binding AngularJS :
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']); }
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
Partager