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 :

[PEAR][HTML_QuickForm] Créer une prévisualisation avant la soumission du formulaire


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 15
    Points : 8
    Points
    8
    Par défaut [PEAR][HTML_QuickForm] Créer une prévisualisation avant la soumission du formulaire
    bonjour à tous,
    j'ai un épineux pb :
    je voudrais pouvoir faire une "preview" (genre un freeze du formulaire) avant soumission du formulaire... et je ne trouve pas
    sur le net j'ai vu ça
    I always implement the input flow of quickform as follow:
    1. user input
    2. validate and freeze the form and prompt for confirmation or return for more editing
    3. proceed to process the form
    oki donc c'est possible... mais personne ne dis comment
    j'ai creuser - et me suis embourbé - du côté de quickform_controller
    pareil... aucun exemple ou ressource sur le sujet à part ça :
    Hi

    I'm a newbie to Quickform Controlller and I am trying to create a multistep form with a preview step before submitting the form.

    I need help creating the preview step in the form wizard.

    I have look at the examples and googled for a solution but I can't seem to locate any examples.

    If anyone can help me with a solution. I would GREATLY appreciate it.

    Thanks in advance.
    tout pareil que moi !!! encore
    une réponse... pas top... enfin a pas compris....
    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
     class foo extends HTML_QuickForm_Page {
    var freeze = false;
     
    function buildFormPage1 () {
    The form of // 1st page
    }
     
    function buildFormPage2 () {
    The form of // 2nd page
    }
     
    function buildFormPage3 () {
    The form of // 3rd page
    }
    }
     
    class FormPage1 extends foo {
    function buildForm () {
    $this->buildFormPage1 ();
    // Prev/Next and the like is made
    }
    }
     
    class FormPage2 extends foo {
    It makes //FormPage1 like
    }
     
    class FormPage3 extends foo {
    It makes //FormPage1 like
    }
     
    class FormConfirm extends foo {
    function buildForm () {
    $this->freeze = true;
    $this->buildForm1 ();
    $this->buildForm2 ();
    $this->buildForm3 ();
    }
    }
     
    class ActionDisplay HTML_QuickForm_Action {
    function _renderForm (&$page) {
    if ($page->isFreeze == true) {
    $page->freeze ();
    }
    // usual processing
    si kelkun à une piste ou +tot une sol...
    parce que c'est MEGA URGENT
    merci

  2. #2
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    bon, ben je me réponds...
    si ça peut aider quelqu'un d'autre...
    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
     
    <?php
    require_once 'HTML/QuickForm/Controller.php';
    require_once 'HTML/QuickForm/Action/Next.php';
    require_once 'HTML/QuickForm/Action/Back.php';
    require_once 'HTML/QuickForm/Action/Jump.php';
    require_once 'HTML/QuickForm/Action/Display.php';
     
    session_start();
    class Page1 extends HTML_QuickForm_Page{
     
    	var $preview = false;
     
    	function isConfirmedForm ($bool){
             $this->preview =  $bool;
        }
     
        function buildForm(){
    		$this->_formBuilt = true;
    		$this->addElement('text','nom','Nom :');
     
    		if ($this->preview) {
    	   		$values = $this->controller->exportValues('page1');
    			$this->loadValues($values);
              	        $this->freeze(); 
    			$buttons[] =& $this->createElement('submit',   $this->getButtonName('back'), '<< retour');
    			$buttons[] = &HTML_QuickForm::createElement('submit', 'next', 'suite >>');
    		} else {
    	   		$buttons[] = &HTML_QuickForm::createElement('reset', null, 'Reset');
    	   		$buttons[] = &HTML_QuickForm::createElement('submit', 'next', 'suite >>');
    		}
                    $this->addGroup($buttons, null, null, '&nbsp;', false);
    	        $this->setDefaultAction('next');
    	}
     
    }
    //formulaire simple
    $page1 = new Page1('page1');
    //construction de la preview
    $page1Preview = new Page1('page1Preview'); 
    $page1Preview->isConfirmedForm(true);
    $controller = new HTML_QuickForm_Controller('test', true); 
    $controller->addPage($page1); 
    $controller->addPage($page1Preview);
    $controller->addAction('display', new HTML_QuickForm_Action_Display());
    $controller->run();
    ?>
    c'est de la bidouille
    j'avais pensé à procéder plus "proprement" avec un truc du genre
    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
     
    require_once 'HTML/QuickForm/Controller.php';
    require_once 'HTML/QuickForm/Action/Next.php';
    require_once 'HTML/QuickForm/Action/Back.php';
    require_once 'HTML/QuickForm/Action/Jump.php';
    require_once 'HTML/QuickForm/Action/Display.php';
     
    session_start();
    [...]
    class PagePreview extends HTML_QuickForm_Page{
        function buildForm(){
    		$this->_formBuilt = true;
    		$this->addElement('header','','preview');
    		$page =& $this->controller->getPage('page1');
    		$page->buildForm();
    		$values = $this->controller->exportValues('page1');
    		$page->loadValues($values);
    		$page->freeze();
        //creation d'un élément de type 'static' pour afficher la preview du form
    		$this->addElement('static', 'testStatic', '', $page->toHTML());
    		$this->addElement('submit',     $this->getButtonName('submit'), 'Fin');
    		$this->setDefaultAction('next');
    	}
    }
     
     
    $page1 = new Page1('page1');
    $page1Preview = new Page1('page1Preview');
    $page1Preview->isConfirmedForm(true);
    $page2 = new PagePreview('page2');
    $controller = new HTML_QuickForm_Controller('test'); 
    $controller->addPage($page1); 
    $controller->addPage($page1Preview);
    $controller->addPage($page2);
    $controller->addAction('display', new HTML_QuickForm_Action_Display());
    $controller->addAction('next', new HTML_QuickForm_Action_Next());
    $controller->addAction('back', new HTML_QuickForm_Action_Back());
    $controller->addAction('jump', new HTML_QuickForm_Action_Jump());
    $controller->addAction('process', new ActionProcess());
    $controller->run();
    ?>
    sauf que qd je dumpe les values via l'ActionProcess()...
    ben ça ne marche pas sous IE7
    par contre ça a l'air de marcher sous firefox...
    'faut réflechir... mais il se fait tard pour mon pov' neuronne
    pis faudrait surcharger toHtml() pour nettoyer <form [...] </form> de l'élément static...
    si quelqu'un est un peu + frais...

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    la suite... Méthode 2 :
    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
    <?php
    require_once 'HTML/QuickForm/Controller.php';
    require_once 'HTML/QuickForm/Action/Next.php';
    require_once 'HTML/QuickForm/Action/Back.php';
    require_once 'HTML/QuickForm/Action/Jump.php';
    require_once 'HTML/QuickForm/Action/Display.php';
     
    class monForm extends HTML_QuickForm_Page { //page 1
     
    	function buildForm(){
    		$this->_formBuilt = true;
    		$this->addElement('text', 'test', 'Test');
     
    		$buttons[] = &HTML_QuickForm::createElement('reset', null, 'Effacer');
    		$buttons[] = &HTML_QuickForm::createElement('submit', 'next', 'Continuer >>');
    	    	$this->addGroup($buttons, 'validButtons', '', '&nbsp', false);
     
    		$this->setDefaultAction('next');
    	}
     
    }
     
    class maPreview extends HTML_QuickForm_Page { //page preview
     
    	function buildForm(){
    		$this->_formBuilt = true;//constructeur
    		$prev =& $this->controller->getPage($this->controller->getPrevName($this->getAttribute('id')));//recupération de la page précédente
    		$mesDatas = $this->controller->exportValues ($prev->getAttribute('id'));//et des datas
     
    		$this->addElement('static', 'recuptest', 'Test récupéré',$mesDatas['test']);//affichage de la saisie effectué en page 1 dans champs test
     
    		$buttons[] =& $this->createElement('submit',   $this->getButtonName('back'), '<< Modifier');
    		$buttons[] = &HTML_QuickForm::createElement('submit', 'next', 'Valider >>');
    	    	$this->addGroup($buttons, 'validButtons', '', '&nbsp', false);
     
    		$this->setDefaultAction('next');
    	}
     
    }
     
    $page1 = new monForm ('page1');
    $page1Preview = new maPreview ('page1Preview');
     
    //construction du controller
    $controller = new HTML_QuickForm_Controller('cmd');
     
    //ajout des pages 
    $controller->addPage($page1); 
    $controller->addPage($page1Preview);
     
    //affectation des actions
    $controller->addAction('display', new HTML_QuickForm_Action_Display());
    $controller->addAction('next', new HTML_QuickForm_Action_Next());
    $controller->addAction('back', new HTML_QuickForm_Action_Back());
    $controller->addAction('jump', new HTML_QuickForm_Action_Jump());
    $controller->addAction('process', new ActionProcess());
     
    //lancement du controller
    $controller->run();
     
    ?>
    ah bah vi...
    sinon toujours la méthode "j'm'étends mes classes" de notre ami anglophone... et le freeze... (moi ça avait bugg... toujours pas compris pourquoi... d'ailleurs) qui en toute logique DOIT MARCHER !
    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
    class foo extends HTML_QuickForm_Page {
    var freeze = false;
     
    function buildFormPage1 () {
    The form of // 1st page
    }
     
    function buildFormPage2 () {
    The form of // 2nd page
    }
     
    function buildFormPage3 () {
    The form of // 3rd page
    }
    }
     
    class FormPage1 extends foo {
    function buildForm () {
    $this->buildFormPage1 ();
    // Prev/Next and the like is made
    }
    }
     
    class FormPage2 extends foo {
    It makes //FormPage1 like
    }
     
    class FormPage3 extends foo {
    It makes //FormPage1 like
    }
     
    class FormConfirm extends foo {
    function buildForm () {
    $this->freeze = true;
    $this->buildForm1 ();
    $this->buildForm2 ();
    $this->buildForm3 ();
    }
    }
     
    class ActionDisplay HTML_QuickForm_Action {
    function _renderForm (&$page) {
    if ($page->isFreeze == true) {
    $page->freeze ();
    }
    // usual processing

Discussions similaires

  1. [WD-2013] Créer une destination avant convertion en PDF
    Par SPACHFR dans le forum Word
    Réponses: 0
    Dernier message: 12/03/2014, 17h14
  2. Réponses: 1
    Dernier message: 20/05/2011, 11h35
  3. Réponses: 4
    Dernier message: 31/05/2010, 20h16
  4. récupération de la valeur d'une variable avant la soumission du formulaire
    Par Dodielapatate dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 31/07/2007, 15h19
  5. message d'erreur avant la soumission du formulaire
    Par ramzos82 dans le forum Struts 1
    Réponses: 2
    Dernier message: 01/05/2007, 13h28

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