Utiliser les champs "dynamiques" de Symfony dans des formulaires affichés par Ajax
Vous êtes vous déjà trouvé au problème des champs dynamiques Symfony dans les formulaire Ajax ? Pour faire simple, les input_auto_complete_tag, input_date_tag et autre "rich text" ne sont pas initialisés correctement lorsqu'ils sont utilisés dans un formulaire affiché par une requête Ajax. Cet article présente quelques méthodes pour palier à ce problème. L'astuce consiste à forcer le chargement des feuilles de styles CSS et bibliothèques Javascripts nécessaires.
Champ input_auto_complete_tag
Pour que le champs input_auto_complete_tag fonctionne correctement dans un formulaire affiché par Ajax, ajoutez les lignes suivantes à votre view.yml :
javascripts:
- %SF_PROTOTYPE_WEB_DIR%/js/prototype
- %SF_PROTOTYPE_WEB_DIR%/js/effects
- %SF_PROTOTYPE_WEB_DIR%/js/controls
stylesheets:
- %SF_PROTOTYPE_WEB_DIR%/css/input_auto_complete_tag
Champ input_date_tag
Pour que le champs input_date_tag fonctionne correctement dans un formulaire affiché par Ajax, ajoutez les lignes suivantes à votre view.yml :
javascripts:
- %SF_CALENDAR_WEB_DIR%/calendar
- %SF_CALENDAR_WEB_DIR%/lang/calendar-<?php echo strtolower(sfContext::getInstance()->getUser()->getCulture()) ?>.js
- %SF_CALENDAR_WEB_DIR%/calendar-setup
stylesheets:
- %SF_CALENDAR_WEB_DIR%/skins/aqua/theme
Champ "Rich Text" TinyMCE
Pour que l'éditeur TinyMCE fonctionne correctement dans un formulaire affiché par Ajax, ajoutez les lignes suivantes à votre view.yml :
javascripts:
- <?php echo sfContext::getInstance()->getRequest()->getRelativeUrlRoot() ?>/%SF_RICH_TEXT_JS_DIR%/tiny_mce.js
Champ admin_double_list
Pour que le champs admin_double_list fonctionne correctement dans un formulaire affiché par Ajax, ajoutez les lignes suivantes à votre view.yml :
javascripts:
- %SF_PROTOTYPE_WEB_DIR%/js/prototype
- %SF_PROTOTYPE_WEB_DIR%/js/double_list