IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[WACT] Un contrôleur pour plusieurs formulaires


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 46
    Points : 15
    Points
    15
    Par défaut [WACT] Un contrôleur pour plusieurs formulaires
    Bonjour,

    Je suis actuellement en stage et je découvre WACT. J'ai encore un peu de mal à me faire à l'architecture MVC.

    Je voulais savoir si c'est possible d'avoir un seul controller pour plusieurs formulaires différents?

    Si oui comment faire svp.

    Merci d'avance à tous ceux qui participeront à ce thread

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 399
    Points : 15 761
    Points
    15 761
    Par défaut
    je ne connais pas spécialement WACT mais en POO une des règles est de ne pas répéter du code identique à plusieurs endroits. donc si les formulaires se ressemblent il est possible d'avoir un seul contrôleur pour plusieurs formulaire mais sinon il n'y a pas de problème à avoir un contrôleur par page

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 46
    Points : 15
    Points
    15
    Par défaut
    Ok ok, je croyais que le fait d'ajouter plusieurs controleurs rendrait le code lour et les temps d'exécution plus long par la même occasion.

    J'ai un petit soucis, j'ai un premier formulaire, il y a deux boutons, un pour le valider, l'autre qui mène à un second formulaire avec lui aussi 2 boutons, un pour valider, l'autre pour annuler.

    Sur le second formulaire quand je clique sur Valider, mes controles sur les champs ne sont pas pris en compte et je reviens directement au premier formulaire.

    Je ne comprends pas cette erreur car le code est à peu près identique à celui du premier formulmaire qui lui fonctionne parfaitement.

    Si idéalement quelqu'un qui connait WACT pourrait m'aider ou alors quelqu'un qui est suceptible de me mettre sur la voie.

    Merci d'avance et ausssi merci à toi Mathieu, si t'as une idée, elle est la bienvenue

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 399
    Points : 15 761
    Points
    15 761
    Par défaut
    Citation Envoyé par lvldia
    Ok ok, je croyais que le fait d'ajouter plusieurs controleurs rendrait le code lour et les temps d'exécution plus long par la même occasion.
    même s'il y a plusieurs contrôleurs, seul un seul est chargé par page donc ça ne change pas beaucoup la charge

    pour ton problème, montre nous un exemple de code

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 46
    Points : 15
    Points
    15
    Par défaut
    Controller pour le premier 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
    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
     
    <?php
    require_once WACT_ROOT . 'controller/controller.inc.php';
    require_once WACT_ROOT . 'controller/form.inc.php';
     
    require_once MODELS_ROOT . 'CommonModel.php';
    require_once MODELS_ROOT . 'CommonModelGen.php';
    require_once VIEWS_ROOT . "IndexView.php";
    require_once VIEWS_ROOT . "FormExtendedView.php";
    require_once VIEWS_ROOT . "ExtendedView.php";
     
    require_once CLASSES_ROOT . "Translation.php";
     
     
    class NumComm extends PageController {
     
     
    	function __construct() {
        	parent::__construct();
     
        	//ajout du formulaire
    	    $Form = new FormController();
    	    $this->addChild('formNumm', $Form);
    	    $Form->registerOnLoadListener(new Delegate($this, 'load'));
    		$this->setDefaultChild('formNumm');    
     
    		//Bouton permettant de valider les infos et vérifier le Numéro Philips
    	    $Form->addChild('valider_coord',  new ButtonController(new Delegate($this, 'verif')));
    	    //Bouton permettant de modifier les informations clients
    	    $Form->addChild('modif_coord',  new ButtonController(new Delegate($this, 'modif')));
     
     
    	    //Vue par défaut
     
    		$this->addView('modif', new Handle(VIEWS_ROOT . 'formModifView.php|formModif', array('/formModifCoord.html')));
    	    $this->setDefaultView(new Handle(VIEWS_ROOT . 'FormEnlevView.php|FormEnlev',array('/formDemandEnlev3.html')));
     
     
    	}
     
        function load(&$Source, &$request, &$responseModel) {
        	if (!SessionManager::get("isLogin")){
    			header("Location: localhost");
        	}else{
        		$responseModel->set("aide",true);
        	}
        }
        function verif(&$Source, &$request, &$responseModel) {
        	if (!SessionManager::get("isLogin")){
    			header("Location: localhost");
        	}else{
        		//vérification de la validité du numéro commercial
        		$Num=$responseModel->get("numcomm");
        		$Num2=substr($Num,0,2);
      			$Num3=substr($Num,0,1);
      			if($Num==""){
      				$responseModel->set("erreur",true);
      			}else{
     
        			if(($Num2!=01 and $Num2!=20 and $Num2!=2 ) or ($Num2==01 and strlen($Num)!=8 ) or  ($Num2==20  and strlen($Num)!=7 ) or ($Num3==2  and strlen($Num)!=7 )){
       					$responseModel->set("erreur2",true);
        			}else{
        				echo "OK!";
        			}
      			}
        	}
        }
        function modif(&$Source, &$request, &$responseModel){
      	    if (!SessionManager::get("isLogin")){
    			header("Location: localhost");
        	}else{
        		return 'modif';
     
        	}
        }
     
    }
     
    ?>
    Et voici celui du second

    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
    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
     
     
    <?php
    require_once WACT_ROOT . 'controller/controller.inc.php';
    require_once WACT_ROOT . 'controller/form.inc.php';
     
     
     
     
     
    require_once MODELS_ROOT . 'CommonModel.php';
    require_once MODELS_ROOT . 'CommonModelGen.php';
    require_once VIEWS_ROOT . "IndexView.php";
    require_once VIEWS_ROOT . "FormExtendedView.php";
    require_once VIEWS_ROOT . "ExtendedView.php";
     
    require_once CLASSES_ROOT . "Translation.php";
     
    class CoordCli extends PageController {
     
    	function __construct() {
        	parent::__construct();
     
        	//ajout du formulaire
    	    $Form = new FormController();
    	    $this->addChild('formAdresse', $Form);
    	    $Form->registerOnLoadListener(new Delegate($this, 'load'));
    	    //$Form->OnPostBack(new delegate($this,'validmodif'));
    		$this->setDefaultChild('formAdresse');    
     
    		//Bouton permettant de valider les modifications des infos clients après vérification des champs 
    	    $Form->addChild('valid_modif', new ButtonController(new Delegate($this, 'validmodif')));
    	    //Bouton permettant d'annuler les modifications
    	    $Form->addChild('annul_modif', new ButtonController(new Delegate($this, 'annulmodif')));
     
     
    	    //Vue par défaut
    	    $this->setDefaultView(new Handle(VIEWS_ROOT . 'formModifView.php|FormModif',array('/formModifCoord.html')));
     
    	}
     
        function load(&$Source, &$request, &$responseModel) {
        	if (!SessionManager::get("isLogin")){
    			header("Location: localhost");
        	}else{
        		$responseModel->Set("aide",true);
        	}
     
        }
     
        function validmodif(&$Source, &$request, &$responseModel){
    				echo "TEST";
        	if (!SessionManager::get("isLogin")){
    			header("Location: localhost");
        	}else{	
     
        		$idclient=SessionManager::get("IDCLIENT");
        		$nom=$responseModel->get("nom");
        		$societe=$responseModel->get("societe");
        		$email=$responseModel->get("mail");
        		$adr=$responseModel->get("adr");
        		$cp=$responseModel->get("cp");
        		$ville=$responseModel->get("ville");
        		$tel=$responseModel->get("tel");
        		$fax=$responseModel->get("fax");
        		$horaire=$responseModel->get("horaire");
        		$jfermeture=$responseModel->get("jfermeture");
     
    			//vérification des champs du formulaire
    			//Nom
    			if($nom==""){
    				$responseModel->set("erreurNom",true);
    				$validNom=false;
    				echo("Nom!");
    			}else{
    				$validNom=true;
    			}
    			//Societe
    			if($societe==""){
    				$responseModel->set("erreurSociete",true);
    				$validSociete=false;
    			}else{
    				$validSociete=true;
    			}	
    			//Mail
    			if($email==""){
    				$responseModel->set("erreurMail1",true);
    				$validMail=false;
    			}else{
    				if(!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email)){
    					$responseModel->set("erreurMail2",true);
    					$validMail=false;
    				}else{
    					$validMail=true;
    				}
    			}	
    			//Adresse
    			if($adr==""){
    				$responseModel->Set("erreurs",true);
    				$responseModel->set("erreurAdr",true);
    				$validAdr=false;
    			}else{
    				$validAdr=true;
    			}
    			//Code postal
    			if($cp==""){
    				$responseModel->set("erreurCp1",true);
    				$validCp=false;
    			}else{
    				if(!number_format($cp) or strlen($cp)!=5){
    					$responseModel->set("erreurCp2",true);
    				}else{
    					$validCp=true;
    				}
    			}
    			//Ville
    			if($ville==""){
    				$responseModel->set("erreurVille",true);
    				$validVille=false;
    			}else{
    				$validVille=true;
    			}
    			//Téléphone
    			if($tel==""){
    				$responseModel->set("erreurTel1",true);
    				$validTel=false;
    			}else{
    				if(!number_format($tel) or strlen($tel!=10)){
    					$responseModel->set("erreurTel2",true);
    					$validTel=false;
    				}else{
    					$validTel=true;
    				}
    			}
    			//Fax
    			if($fax!=""){
    				if(!number_format($fax) or strlen($fax)!=10){
    					$responseModel->set("erreurFax",true);
    					$validFax=false;
    				}else{
    					$validFax=true;
    				}
    			}else{
    				$validFax=true;
    			}
    			//Horaire
    			if($horaire==""){
    				$responseModel->set("erreurHoraire",true);
    				$validHoraire=false;
    			}else{
    				$validHoraire=true;
    			}
    			//Jfermeture
    			if($jfermeture==""){
    				$responseModel->set("erreurJfermeture",true);
    				$validJfermeture=false;
    			}else{
    				$validJfermeture=true;
    			}
     
    			//Insertion dans la base de données si tous les champs sont corrects
    			if($validNom==true and $validSociete==true and $validMail==true and $validAdr==true and $validCp==true and $validVille==true and $validTel==true and $validFax==true and $validHoraire==true and $validJfermeture==true){
        			CommonModel::validmodif($idclient,$nom,$societe,$email,$adr,$cp,$ville,$tel,$fax,$horaire,$jfermeture);
    			}else{
    				$responseModel->Set("erreurs",true);
    				return;
    			}
        	}
     
        }
     
            function annulmodif(&$Source, &$request, &$responseModel){
              if (!SessionManager::get("isLogin")){
    			header("Location: localhost");
              }else{
              	header("Location: ../index.php/SavPhi");
              }
     
            }
     
    }
     
    ?>
    EDIT : Mon problème précis est le suivant : Je fais tout une batterie de test sur les champs de mon formulaire dans mon second controleur, mais ceux-ci ne sont pas exécutés. Et ceci tiens apparemment au fait que lorsque a partir de ma premiere page, quand je clique sur le bouton modifier qui m'amène vers le formulaire de modification, je charge bien la page du formulaire mais pas le controleur (donc cette page dépend toujours du premier controleur).

    Je voudrais donc savoir comment faire pour sauter d'un controleur à un autre.

    Merci

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 46
    Points : 15
    Points
    15
    Par défaut
    A force de modifier, remodifier, re remodifier mon code j'ai réussi enfin à trouver une solution.

    En fait je ne fonctionne qu'avec un seul controlleur et plussieurs formulaires, le tout est de donner le même nom a chaque formulaire et ça tourne impeccable.

    Merci tout de même pour avoir essayer d'apporter une solution à mon problème

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. 1 Bindingsource pour plusieurs formulaires
    Par Sorayun dans le forum Windows Forms
    Réponses: 0
    Dernier message: 12/01/2010, 17h32
  2. Réponses: 16
    Dernier message: 03/04/2008, 00h14
  3. Réponses: 4
    Dernier message: 09/08/2007, 10h26
  4. Un submit pour plusieurs formulaires
    Par beufa dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/11/2005, 15h51
  5. Comment utiliser la meme table pour plusieurs formulaires
    Par pacodelareunion dans le forum Access
    Réponses: 5
    Dernier message: 26/10/2005, 15h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo