Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Hello tout le monde,
Derrière ce titre un peu flou, je fais suite à mon précédent post sur le sujet Zend_Form et Zend_Xml. Fort content de pouvoir générer mes formulaires via un Zend_Config_Xml et de pouvoir les traduire très simplement via le composant Zend_Translate, je cherche à présent (fada que je suis ) à charger les 'values' de mon formulaire avec un autre fichier xml qui lui va stocker les données. Bon, c'est pas la peine de crier je me doute que je m'engage dans un chemin tortueux. Si vous pensez que c'est tout simplement pas possible, j'enclenche de suite la marche arrière. Si il y a un espoir je veux bien continuer à vous expliquer mon problème.
J'ai donc ce fichier qui va contenir les données de configuration de mon application
Fichier : xml-general.xml
<?xml version="1.0" encoding="UTF-8"?> <configdata> <configs> <config name="siteTitle"> <value>www.example.com</value> </config> <config name="uploadPath"> <value>/tmp</value> </config> <config name="sessionDuration"> <value>60</value> </config> </configs> </configdata>
Ensuite le fichier qui génèrera le formulaire de configuration
Fichier config-forms.xml:
<?xml version="1.0" encoding="UTF-8"?> <forms> <localhost> <configs> <!-- General Config Form --> <general> <action>/admin/config/save/xml/general</action> <method>post</method> <name>configGeneralForm</name> <elements> <!-- To retrieve form name in controller --> <formName> <type>hidden</type> <options> <value>general</value> </options> </formName> <siteTitle> <type>text</type> <options> <value>site.Title here !</value> <label>config.general.site.title</label> <validators> <strlen> <validator>StringLength</validator> <options> <min>4</min> <max>50</max> </options> </strlen> </validators> </options> </siteTitle> <uploadPath> <type>text</type> <value>/tmp</value> <options> <label>config.general.upload.path</label> </options> </uploadPath> <sessionDuration> <type>text</type> <value>60</value> <options> <label>config.general.session.duration</label> </options> </sessionDuration> <submit> <type>submit</type> <options> <label>config.general.register</label> <class>button</class> </options> </submit> </elements> </general> <!-- END of General Config Form --> </configs> </localhost> </forms>
et enfin l'action getForm :
public function getForm($myForm) { $config = new Zend_Config_Xml($this->_app_base . '/application/config/config-forms.xml','localhost'); $form = new Zend_Form($config->configs->$myForm); $form->setTranslator(Zend_Registry::get('translator')); return $form; }
l'action getForm provient du post (http://www.z-f.fr/forum/viewtopic.php?id=1859) et est basé sur le code de DragonBe.
Ce que je voudrais donc c'est pouvoir charger les valeurs xml-general.xml (ex.: www.exemple.com) dans le formulaire affiché. Evidemment, car je me doute que vous allez me faire la remarque, les value de config-forms.xml sont préremplis pour aider à voir de quoi je parle. On peut très bien imaginer quelles soient vides ou remplies avec des valeurs différentes.
Je bloque donc sur ce dernier point pour mettre en place mon système de configuration intégralement basé sur xml.
Pensez vous que je m'égare dans les tréfonds d'xml ?? Enfin, toujours est il que je souhaiterai tout de même trouver une solution à mon problème.
J'espère avoir été clair dans mes propos, si ce n'est pas le cas, vous pouvez me crier dessus... enfin pas trop fort, on est vendredi tout de même
Je suis ouvert à toute proposition, idées, critiques, améliorations, etc...
Cordialement,
Hors ligne
Je crois que je vais jetter un oeil à :
$form->populate($data);
La doc mentionne juste cette méthode mais ne détail guère son fonctionnement.
Je vous tiens au courant lorsque j'en sais un peu plus.
Cordialement,
Hors ligne
Alors j'avance petit à petit, l'utilisation de populate() est très simple.
Si je reprends une partie de mon fichier xml générant le formulaire :
... <siteTitle> <type>text</type> <options> <value>site.Title here !</value> <label>config.general.site.title</label> <validators> <strlen> <validator>StringLength</validator> <options> <min>4</min> <max>50</max> </options> </strlen> </validators> </options> </siteTitle> ...
il suffit de passer comme argument à la fonction populate(), une ligne de ce type :
$form->populate(array('uploadPath'=>'/monrepertoiretemporaire', 'siteTitle'=>'mon site', 'sessionDuration'=>'600'));
Et ça marche... Merci Zend !!!
Il ne me reste plus qu'à gérer le tronçon manquant en 2 temps :
- récupérer toutes les 'values' que je souhaite dans mon fichier xml contenant la config et à les envoyer vers populate()
- dans l'autre sens enregistrer les valeurs saisis par l'utilisateur via le formulaire dans ce même fichier (sans doute avec SimpleXML...
Je vous tiens au courant...
Bon week end à toutes et à tous...
Hors ligne
Pages: 1