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

MkFramework Discussion :

Comment avoir plusieurs modules sur une même page


Sujet :

MkFramework

  1. #1
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut Comment avoir plusieurs modules sur une même page
    Salut à tous,

    En se référant au tutoriel http://mkframework.com/tutoriaux.html#multiStep j'aimerais savoir s'il est possible d'avoir sur la première page (step1) la création de l'objet 'compte' et de l'objet 'adresseFacturation' en même temps (avec un seul bouton 'submit'), puis passer au step 2 pour terminer.
    Cela serait très utile dans le cas ou l'on a plusieurs tables (plus de 4 tables) à nourrir dans un formulaire multi-step.

    Si vous avez une idée, merci déjà.

  2. #2
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Plusieurs choses:

    1. on peut ajouter plusieurs "view" à une page: $this->oLayout->add ajouter des vues, elle n'ecrase pas l'emplacement

    2. vous pouvez également opter pour des modules imbriqués, mais pour votre cas, la première solution semble la plus simple et logique à mettre en place
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  3. #3
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    1. on peut ajouter plusieurs "view" à une page: $this->oLayout->add ajouter des vues, elle n'ecrase pas l'emplacement
    Si vraiment ça n'écrase pas le précédent formulaire alors testons!

    merci pour l'idée.

  4. #4
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Je confirme que ça n'écrase pas

    Pour l'info technique: la méthode ajoute dans un tableau les objets "_view", puis lors de l'affichage boucle sur ce tableau pour afficher chaque "emplacement" main, menu...
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  5. #5
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    J'ai pu afficher dans la même page, les formulaires de différents modules
    Dans le processEtape2() je retourne la liste des erreurs liées aux objets mal renseignés. j'utilise la fonction 'array_merge()' que je viens de découvrir:
    Code php : 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
     
    private function processEtape2(){
           if(!_root::getRequest()->isPost() ){ //si ce n'est pas une requete POST on ne soumet pas
               return null;
           }
     
           $oPluginXsrf=new plugin_xsrf();
           if(!$oPluginXsrf->checkToken( _root::getParam('token') ) ){ //on verifie que le token est valide
               return array('token'=>$oPluginXsrf->getMessage() );
           }
     
           $oDiplome=new row_diplomes;   
           $tColumn=array('universite','annee','specialite','type_diplome_id','pays_id');
    		foreach($tColumn as $sColumn){
    			$oDiplome->$sColumn=_root::getParam($sColumn,null) ;
    		}
     
    		$oCompetence=new row_competences;   
          $tColumn=array('intitule','description');
    		foreach($tColumn as $sColumn){
    			$oCompetence->$sColumn=_root::getParam($sColumn,null) ;
    		}
     
     
           if(($oDiplome->isValid()) and ($oCompetence->isValid() )){
               $_SESSION['oDiplome']=$oDiplome;
    		   $_SESSION['oCompetence']=$oCompetence;
               //une fois enregistre on redirige (vers la page liste)
               _root::redirect('inscriptions::etape3');
           }else{
               return array_merge($oDiplome->getListError(),$oCompetence->getListError()) ;
           }
       }

    Dans mon formulaire lorsque je ne renseigne pas un champs(sur lequel il y a une versification dans le model) j'obtiens une erreur plutôt qu'un message en rouge.
    Comment puis-je te montrer l'erreur retournée?

  6. #6
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Vous pouvez copier coller l'erreur (stacktrace) dans une basise code (pour avoir l'indentation)

    pensez à supprimer / remplacer par XXX si il y a des mdp dans celles-ci
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  7. #7
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    Je ne sais pas ce que c'est que la stacktrace.
    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
     
    array_merge(): Argument #1 is not an array
    #0 [internal function]: exception_error_handler(2, 'array_merge(): ...', 'C:\\xampp\\htdocs...', 129, Array)
    #1 C:\xampp\htdocs\MKF\data\genere\e-tmg\module\inscriptions\main.php(129): array_merge(NULL, Array)
    #2 C:\xampp\htdocs\MKF\data\genere\e-tmg\module\inscriptions\main.php(79): module_inscriptions->processEtape2()
    #3 C:\xampp\htdocs\MKF\lib\framework\class_root.php(263): module_inscriptions->_etape2()
    #4 C:\xampp\htdocs\MKF\data\genere\e-tmg\public\index.php(47): _root->run()
    #5 {main}
     
    Detail:
    #0 exception_error_handler( , 'array_merge(): Argument #1 is not an array' , 'C:\xampp\htdocs\MKF\data\genere\e-tmg\module\inscriptions\main.php' , , Array ( [oPluginXsrf] => plugin_xsrf Object ( [sSalt:plugin_xsrf:private] => fdsfA34T679hjfdsAfef [iLifetime:plugin_xsrf:private] => 360 [sMsg:plugin_xsrf:private] => [bUseSession:plugin_xsrf:private] => 0 [sSessionVar:plugin_xsrf:private] => xsrfTokenArray ) [oDiplome] => row_diplomes Object ( [sClassModel:protected] => model_diplomes [_bChooseUpdate:abstract_row:private] => [_tProperty:protected] => Array ( [universite] => [annee] => 5 [specialite] => dede [type_diplome_id] => 1 [pays_id] => 8 ) [_tPropertyToUpdate:protected] => Array ( [0] => universite [1] => annee [2] => specialite [3] => type_diplome_id [4] => pays_id ) ) [tColumn] => Array ( [0] => intitule [1] => description ) [sColumn] => description [oCompetence] => row_competences Object ( [sClassModel:protected] => model_competences [_bChooseUpdate:abstract_row:private] => [_tProperty:protected] => Array ( [intitule] => [description] => ) [_tPropertyToUpdate:protected] => Array ( [0] => intitule [1] => description ) ) ) ) 
    #1 C:\xampp\htdocs\MKF\data\genere\e-tmg\module\inscriptions\main.php (129) 
    array_merge( NULL , Array ( [intitule] => Array ( [0] => Le champ ne doit pas être vide ) ) ) 
    #2 C:\xampp\htdocs\MKF\data\genere\e-tmg\module\inscriptions\main.php (79) 
    module_inscriptions -> processEtape2( ) 
    #3 C:\xampp\htdocs\MKF\lib\framework\class_root.php (263) 
    module_inscriptions -> _etape2( ) 
    #4 C:\xampp\htdocs\MKF\data\genere\e-tmg\public\index.php (47) 
    _root -> run( ) 
    #5 {main}
    Fichier : C:\xampp\htdocs\MKF\data\genere\e-tmg\module\inscriptions\main.php ligne 129
     
    Message : array_merge(): Argument #1 is not an array

  8. #8
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    C'est bien ça

    L'erreur indique que pour un merge, le premier parametre doit etre un tableau, je pense qu'ici c'est une valeur "null" qui est retournée entrainant l'erreur

    je pense qu'avant de faire le merge, il faudrait verifier le type de retour

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if(is_array($oDiplome->getListError()) and is_array($oCompetence->getListError()) ){
     
     return array_merge($oDiplome->getListError(),$oCompetence->getListError()) ;
    }else if(is_array($oDiplome->getListError()) ){
     
     return $oDiplome->getListError();
    }else if(is_array($oCompetence->getListError()) ){
     
     return $oCompetence->getListError();
    }
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  9. #9
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    Merci bien,j'ai pu récupérer les messages d'erreurs.
    Par rapport à ce tutoriel, tu n'as pas mentionné les liens 'retour' dans chaque étape pour revenir corriger les informations sur l'étape précédente.

  10. #10
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    En effet, je le rajoute ce soir, puis je cloturerai ce topic
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  11. #11
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Tutoriel mis à jour

    j'ai mis les liens au niveau du titre, cela fait un peu comme un fil d'arianne: Etape 1 > Etape 2 > Etape courante

    http://mkframework.com/tutoriaux.html#multiStep
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  12. #12
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    Le retour à la page précédente ne conserve pas les informations précédemment saisies. Pour faire ça il faut afficher dans les champs la valeur correspondant à la session?

  13. #13
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    OUi exact, il faudrait que je modifie le tutoriel en conséquence, remarque pertinente
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  14. #14
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    Salut,

    Puisque les éléments des formulaires sont créés avec '$oForm->getInputText('nom_du_champ')', comment faire en sorte que lors du retour à la page précédente que le champ conserve la valeur qui y avait été saisie?

  15. #15
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Je mets à jour ce tutoriel ce soir, mais pour répondre à votre question:

    C'est à la construction de l'objet form que l'on lui passe l'objet à remplir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $oForm=new plugin_form($this->oCompte);

    Donc il suffit de modifier l'étape 1 ainsi:
    Remplacez
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public function _etape1(){
     
           $tMessage=$this->processEtape1();
     
           $oCompte=new row_comptes;
    par
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public function _etape1(){
     
           $tMessage=$this->processEtape1();
     
    	if(isset($_SESSION['oCompte'])){
    		$oCompte=$_SESSION['oCompte'];
    	}else{
    		$oCompte=new row_comptes;
    	}

    sachant que quelques lignes plus bas, cet objet $oCompte est passé à la vue
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $oView=new _view('steps::etape1');
           $oView->oCompte=$oCompte;
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  16. #16
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    J'ai mis à jour le tutoriel sur le site:
    http://mkframework.com/tutoriaux.html#multiStep
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  17. #17
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    Bonjour,

    Quand je vois ça je me dis que je n'ai pas encore les bon réflexes, c’était pourtant simple. Merci beaucoup pour ton aide imikado.

  18. #18
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    C'est toujours plus simple quand on sait
    Si c'est pas clair pour vous, c'est que l'info manque ou est mal mise en avant sur la doc, je dois donc l'améliorer pour éviter que l'on se pose la question

    Il manque clairement un tuto/faq sur l'utilisation de ce plugin
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

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

Discussions similaires

  1. [XHTML] comment déclarer plusieurs doctypes dans une même page
    Par elsapascal dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 21/06/2008, 11h20
  2. Plusieurs formulaires sur une même page
    Par patsak dans le forum Langage
    Réponses: 3
    Dernier message: 11/06/2008, 16h14
  3. [JpGraph] Plusieurs graphes sur une même page
    Par Dam1en dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/12/2007, 23h13
  4. Comment avoir des div sur une même ligne sans utiliser float ?
    Par Sergejack dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 13/10/2007, 15h31
  5. [C#][SVG] Combinaison de plusieurs graphe sur une même page
    Par doudoustephane dans le forum ASP.NET
    Réponses: 2
    Dernier message: 22/11/2006, 09h19

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