Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Form
Zend_Form Forum d'entraide pour le composant Zend_Form du Zend Framework (création de formulaires, helpers, AJAX etc.). Avant de poster -> FAQ Zend_Form.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/05/2008, 11h04   #1
Invité de passage
 
Inscription : mai 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 2
Points : 1
Points : 1
Par défaut [Zend_form ou Zend_input_filter] Formulaire multiligne

Bonjour je galère depuis plusieurs jours et je ne parviens toujours pas à creer/gerer les erreurs/enregistrer un formulaire multilignes.

Mon formulaire est par exemple :
Code :
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<form name="formDataManager" id="formDataManager" method="post" action="/app/backoffice/users/modifier">
	<div id="main">
		<table style="width:100%;" cellpadding="0" cellspacing="0" class="list" id="toolbox">
			<thead>
				<tr>
					<th class="center" title="RmContactId">
						Identifiant Utilisateur					
					</th>
					<th class="center">
						Nom d'utilisateur					
					</th>
					<th class="center">
						Mot de passe					
					</th>
					<th class="center">
						Confirmation du mot de passe					
					</th>
					<th class="center">
						Profil					
					</th>								
				</tr>
			</thead>
			<tbody>							
				<tr class="row1">
					<td class="center">
						<img src="/app/backoffice/html/images/bt-RmCivility.png"><br>
						<input type="hidden" name="id_utilisateur[1]" value="1">
						1					
					</td>
					<td class="center"><input type="text" name="login[1]" value="sebastien"></td>
					<td class="center"><input type="text" name="password[1]" value=""></td>
					<td class="center"><input type="text" name="password_verif[1]" value=""></td>
					<td class="center">
						<select name="profil[1]" id="profil-1">
    						<option value="admin" label="admin" selected="selected">admin</option>
   					 		<option value="user" label="user">user</option>
						</select>
					</td>								
				</tr>
 
				<tr class="row1">
					<td class="center">
						<img src="/app/backoffice/html/images/bt-RmCivility.png"><br>
						<input type="hidden" name="id_utilisateur[2]" value="2">
						2					
					</td>
					<td class="center"><input type="text" name="login[2]" value="test"></td>
					<td class="center"><input type="text" name="password[2]" value=""></td>
					<td class="center"><input type="text" name="password_verif[2]" value=""></td>
					<td class="center">
						<select name="profil[2]" id="profil-2">
    						<option value="admin" label="admin">admin</option>
    						<option value="user" label="user">user</option>
						</select>
					</td>								
				</tr>			
				<tr>
					<td colspan=5>
						<input type="submit" name="valider" value="Valider" title="Valider les enregistrements sélectionnés.">
					</td>						
				</tr>	
			</tbody>
		</table>
	</div>
</form>
Je recois donc en post :
Code :
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
37
38
Array
(
    [order] => 
    [ordertype] => 
    [page] => 
    [nb_par_page] => 
    [id_utilisateur] => Array
        (
            [1] => 1
            [2] => 2
        )
 
    [login] => Array
        (
            [1] => sebastien
            [2] => 
        )
 
    [password] => Array
        (
            [1] => 
            [2] => 
        )
 
    [password_verif] => Array
        (
            [1] => 
            [2] => 
        )
 
    [profil] => Array
        (
            [1] => admin
            [2] => admin
        )
 
    [valider] => Valider
)
Avec Zend_input_filter j'ai aucun moyen de savoir quel enregistrement est faux, par exemple si je fais une erreur sur le login, je vais obtenir :
Code :
1
2
3
4
5
6
7
8
Array
(
    [login] => Array
        (
            [stringLengthTooShort] => Le champ "Nom d'utilisateur" doit faire entre 5 et 20 caractères.
        )
 
)
Aucune indication de quel ligne proviens l'erreur !

Mon code de validation :
Code :
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
37
$formData = $this->_request->getPost();
 
			//Définition des filtres et critères de validation
			$filters = array(			    
			    'login'				=> array('StringTrim','StripTags','StringToLower'),
				'password'			=> array('StringTrim','StripTags','StringToLower'),
				'password_verif'	=> array('StringTrim','StripTags','StringToLower')				
			);
 
 
			$validators = array(					
				"login"			=>array('allowEmpty' => false,
										new Zend_Validate_StringLength(5,20),								 
										'messages' => array(sprintf($this->view->_('Champ "%3$s" entre %1$d et %2$d caractères'),5,20,$this->view->_('login')))
                                        ),
                "password"		=>array('allowEmpty' => true,
                						'alnum', 
                						'messages'=> sprintf($this->view->_('Champ "%1$s" doit être alphanumérique'),$this->view->_('password'))
                                        ),                       
             	"password_verif"=>array('allowEmpty' => true,
                						'alnum', 
                						'messages'=> sprintf($this->view->_('Champ "%1$s" doit être alphanumérique'),$this->view->_('password_confirm')))                       
 
            );
 
           	$options = array(
				    'notEmptyMessage' 	=> $this->view->_("Empty '%field%'"),
			    	'missingMessage' 	=> $this->view->_("Empty '%field%'")           			
				);
 
 
			$box = new Zend_Filter_Input($filters,$validators);
			$box->setOptions($options);
			$box->setData($formData);
 
			//Vérification du formulaire
			if ($box->isValid())
Bref, de même avec Zend_form, je ne parviens pas à creer de formulaire multiligne avec des tableaux en nom d'input (id_utilisateur[], profil[])
Si quelqu'un a une solution cela m'aiderait beaucoup, car je trouve plus rien à faire que de ne pas utiliser Zend_form et zend_input_filter
sebondus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 11h21   #2
Invité de passage
 
Inscription : mai 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 2
Points : 1
Points : 1
Je suis sur une solution : http://davidcaylor.com/
Apparement il faut utiliser Zend_Form_SubForm
sebondus est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h41.


 
 
 
 
Partenaires

Hébergement Web