Bonjour,
j'ai un Zend_Form dans lequel j'ai trois Zend_Form_Element_Select (SelCat,SelUS,SelStand). Dans le formulaire que je veux créer il y a des dépendances entre les trois "Element_Select".
Dépendances:
- Lors d'un changement de 'SelCat', je vais actualiser les composants 'SelUS' et 'SelStand'
- Lors d'un changement de 'SelUs', je vais actualiser le composant 'SelStand'
- Je veux faire ces changements sans avoir à valider 3 formulaires les uns à la suite des autres
Note: dans le bout de code ci-dessous j'ai simplifié. Le contenu du champ 'multioption' sera chargé par la base de donnée.
Cas similaire: Pour simplifier, c'est comme si j'avais un champ 'pays', 'département' et 'ville'. Si j'ai choisi le pays 'Allemagne', je ne devrais pas pouvoir choisir le département 'Aube'. Si j'ai choisi le pays 'France' et département '75', je ne pourrais pas choisir Lyon comme ville.
Dans les forums, j'ai longuement cherché (si, si je vous assure) et je suis tombé sur deux solutions 'dojo' et 'javascript'. Je n'ai par contre pas compris comment je pourrais implémenter ces composants dans mon formulaire.
Mes questions:
- Dans le code ci dessous, j'ai essayé de faire la réactualisation en configurant le champ 'attribs' => array('onchange'=>'myownfunction') et le système me renvoie que ma fonction 'myownfunction' n'existe pas. Je n'arrive pas à comprendre comment et où je dois définir cette fonction 'myownfunction' pour que ca marche.
- Est-ce qu'il est possible de n'utiliser que PHP pour implémenter cette fonction dans mon formulaire..
- Vais-je être obligé d'avoir recours à 'dojo' et/ou 'javascript' et pourquoi ?
Si on m'explique le principe de base et où trouver la doc nécessaire, je me débrouillerais, mais en ce moment je ne sais pas par quel bout attraper mon problème.
Voici le code de mon formulaire:
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
24
25
26
27
28
29
30
31
32
33
34
35
36 class Form_SearchQuicklinkCat extends Zend_Form { public function init() { // set the method for the display form to POST $this->setMethod('post'); $this->addElement('select','selCat',array( 'label' => 'select category', 'required' =>true, 'attribs' =>array('onchange'=>'myownfunction'), 'multioptions' =>array('dt1'=>'Document Type 1', 'dt2'=>'Document Type 2'))); $this->addElement('select','selUS',array( 'label' => 'select unit/stage', 'required' =>true, 'multioptions' =>array('A'=>'Item A', 'B'=>'Item B', 'spec'=>'special Items'))); $this->addElement('select','selStand',array( 'label' => 'select phase', 'required' =>true, 'multioptions' =>array('1'=>'Phase 1', '2'=>'Phase 2', 'gen'=>'All phases'))); // add the submit button $this->addElement('submit', 'submit', array( 'label' => 'Get Link',)); } function myownfunction() { $this->selUS->setMultiOptions(array('X'=>'UnknowItems')); $this->selStand->setMultiOptions(array('X'=>'No Phases concerned')); print_r('You enter in my own function'); } }
Partager