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

Zend Framework PHP Discussion :

[Zend] Soumission de formulaire une deuxième fois impossible


Sujet :

Zend Framework PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut [Zend] Soumission de formulaire une deuxième fois impossible
    Bonjour,

    Après recherche sur le forum sans succès,

    je fait appel a vous afin de clarifier un usecase de formulaire

    quand mon fomrluaire est soumis avec des erreurs

    il m'est impossible de resoumettre une nouvelle fois le formulaire

    voici le code html après avoir soumis le formulaire une fois: mes élément qui normalement se trouve dans la balise de formalaire ne le sont plus..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <ul class="content-box"><form id="recognition1" name="recognition1" enctype="application/x-www-form-urlencoded" action="monaction" method="post"></form>
     (element qui normalement est dans mon formuaire...)</ul>

    Merci pour vos réactions.

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    J'ai pas tout compris.

    Déjà je ne vois pas de bouton submit. Le peu de code que tu as posté n'aide guère.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut Formulaire
    Merci pour ta réaction..

    pour commencer je te poste le 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
     
    class Myform extends CrudForm implements ModelMap
    {
    public function init()
        {
            // id
            $elem = new Hidden(self::ELEM_ID);
            $elem->addValidator('Alnum');
            $elem->setOrder(1);
     
            $this->addElement($elem);
     
            // name
            $elem = new Text(self::ELEM_NAME);
            $elem->setLabel('name');
            $elem->addValidator(new \Zend_Validate_StringLength(1, 32));
            $elem->addValidator(new StringLengthValidator(array('min' => 1,'max' =>32, 'encoding' => 'UTF-8', 'isMb' => true)));
            $elem->setRequired(true);
            $elem->setOrder(2);
     
            $this->addElement($elem);
     
            // description
            $elem = new Text(self::ELEM_DESCRIPTION);
            $elem->setLabel('desciprtion');
            $elem->addValidator(new \Zend_Validate_StringLength(0, 255));
            $elem->addValidator(new StringLengthValidator(array('min' => 0,'max' =>255, 'encoding' => 'UTF-8', 'isMb' => true)));
            $elem->setOrder(3);
     
            $this->addElement($elem);
     
     
            // submit
     
            $elem = new \Zend_Form_Element_Button(self::ELEM_SUBMIT);
     
            $elem->setLabel('submit');
            $elem->setOrder(99);
            $this->addElement($elem);
     
            parent::init();
             }
     }
    et le code html générer:

    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
     
    <form enctype="application/x-www-form-urlencoded" action="monaction" method="post"><ul class="content-box">
    <li class="hidden"><div>
    <input type="hidden" name="__validation_type" value="add" id="__validation_type"></div></li>
    <li class="hidden"><div>
    <input type="hidden" name="id" value="" id="id"></div></li>
    <li><label for="name" class="desc required">Nom *</label>
    <div>
    <input type="text" name="name" id="name" value="" class="field text full"></div></li>
    <li><label for="description" class="desc optional">Description</label>
    <div>
    <input type="text" name="description" id="description" value="" class="field text full"></div></li>
    <li class="hidden"><div>
    <input type="hidden" name="__redirect_invalid" value="monurl" id="__redirect_invalid"></div></li>
    <li class="buttons"><div>
    <input type="submit" name="submit" id="submit" value="Submit" class="ui-state-default ui-corner-all float-right ui-button"></li></ul></form>
    et voici le code html après avoir soumis une première fois avec par exemple des champs vide

    ce qui me retourne des erreur mais ne permet pas de soumettre une nouvelle fois le formulaire,

    le bouton submit est bloquer..

    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
     
    <ul class="content-box"><form enctype="application/x-www-form-urlencoded" action="monaction" method="post"></form>
    <div><li class="hidden"></li>
    <input type="hidden" name="__redirect_invalid" value="monurl" id="__redirect_invalid"></div>
    <div><li class="hidden"></li>
    <input type="hidden" name="id" value="" id="id"></div>
    <div><label for="name" class="desc required">Nom *</label>
    <li>
    <ul class="errors"><li>Value is required and can't be empty</li></ul></li>
    <input type="text" name="name" id="name" value="" class="field text full"></div>
    <div><label for="description" class="desc optional">Description</label>
    <li></li>
    <input type="text" name="description" id="description" value="" class="field text full"></div>
    <div><label for="type" class="desc required">Type *</label>
    <li></li>
    <div><li class="hidden"></li>
    <input type="hidden" name="__validation_type" value="add" id="__validation_type"></div>
    <div><li class="buttons"></li>
    <input type="submit" name="submit" id="submit" value="Submit" class="ui-state-default ui-corner-all float-right ui-button"></div></ul>

  4. #4
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Salut,
    dans le html généré après le premier envoi , ton form est vide(mauvais copier-coller ou c'est bien le truc généré ?) donc je pense que c'est tout à fait normal que rien ne se passe..
    A toi de voir qu'est-ce qui pourrait être la cause du mauvais html généré après le premier envoi
    Le bienfait n'est jamais perdu

  5. #5
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut
    Merci Willy pour ta réaction.

    Comme tu dit, c'est peut-être un mauvais copier coller mais le form est bien vide avant de soumettre.
    Ce que je fait c'est que je redirige l'utilisateur sur le même formulaire après qu'il l'ai soumis avec des erreurs.. Ce qui ferme les formulaires (ce que j'essaie d'expliquer au mieux mais pas évident).
    Tu pense pas que je doit créé deux formulaires afin de gérer ce cas ?
    En général je ne redirige pas l'utilisateur après qu'il ai soumis avec des erreurs..
    Dans ce cas là oui..

  6. #6
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Quand je parle de vide, je ne sais pas si on se comprends mais je ne parlais pas des champs de ton formulaire.. Tu as un truc comme ça <form enctype="application/x-www-form-urlencoded" action="monaction" method="post"></form> donc ton form ici est vide, le bouton submit qui se retrouve tout seul en bas aura aucune action. Le 2ème html que tu as montré est incorrect, comment tu l'obtiens ?
    Le bienfait n'est jamais perdu

  7. #7
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut
    je l'obtient juste après avoir soumis mon formulaire avec une erreur(s)

    c'est ce que j'essaie de résoudre ou du moins juste avoir une explication.

    par la même occasion mon formulaire dans cet état est inutilisable

    et du coup je doit rafraichir la page.

    est-ce au niveau du formulaire?

    ce que je doute car j'ai des autres formulaire qui eux fonctionne très bien..

    la seule différence a mon avis c'est au niveau du redirect..? à confirmer.

  8. #8
    Membre régulier Avatar de Persistant
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2016
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2016
    Messages : 50
    Points : 73
    Points
    73
    Par défaut Bonsoir
    Nom : boule-de-cristal-600x398.jpg
Affichages : 420
Taille : 53,1 Ko

    Comme tu n'as pas montré assez de code(Controller, View, CrudForm, etc...) Je me retourne vers ma boule de cristal qui me dis que tu as une erreur javascript... Surement du au faite que le bouton submit n'est pas entre les balise form comme Willy_k te l'a expliqué...

    As tu vérifié que tu n'as pas d'erreur dans la console de ton navigateur ?
    As tu vérifié que le code que tu poste n'est pas une erreur de copier collé ?
    Si tu es novice, ne soit pas avar en code (poste tout puisque tu semble perdu dans ton code)

  9. #9
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut post code
    Merci pour ta réaction..

    voici mes 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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    abstract class MyForm extends \Form\Standard
    {
        const SELECT = "select";
        const ELEM_MESSAGE     = 'message';
        const ELEM_SUBMIT      = 'submit';
     
     
        public function init()
        {
            parent::init();
     
     
            $this->addElement(new Element\select(self::SELECT));
     
     
            $elem = new \Textarea(self::ELEM_MESSAGE);
            $elem->setLabel('label');
            $elem->setRequired(true);
            $elem->setAttrib('rows', 5);
            $this->addElement($elem);
     
     
            $elem = new \Submit(self::ELEM_SUBMIT);
            $elem->setIgnore(false);
            $elem->setLabel('Add');
            $elem->setOrder(99);
            $this->addElement($elem);
        }
        /**
         * @return mixed
         */
        protected function getMessage()
        {
            return $this->getValue(self::ELEM_MESSAGE);
        }
    }
    class  MySubForm extends Myform
    {
     
        /**
         * @var string
         */
        private $fileTypeAction;
     
     
     
        public function __construct($fileTypeAction)
        {
            if (!in_array($fileTypeAction, \FileType::getActions())) {
                throw new \UnexpectedValueException('Invalid list type action given.');
            }
     
     
            $this->fileTypeAction = $fileTypeAction;
     
     
            parent::__construct();
        }
     
     
        public function init()
        {
            parent::init();
     
     
            $this->setAction(
                \Zend_Controller_Front::getInstance()->getRouter()->assemble(
                    array(
                        'module'     => 'MyModule',
                        'action'     => 'myProcSend',
                        'controller' => 'mysend'
                    ),
                    null,
                    true
                )
            );
     
     
            $elem = new Hidden(self::ELEM_FILE_TYPE_ACTION);
            $elem->setValue($this->fileTypeAction);
            $elem->setRequired();
            $this->addElement($elem);
     
     
            $elem = new Select(self::ELEM_BLACKLIST);
            if ($this->fileTypeAction === \FileType::TYPE_CONST) {
                $elem->setLabel('MyLabel');
            }
            else {
                $elem->setLabel('MySecondLabel');
            }
       }   
    }
    mon controlleur:

    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
     
     
    class MysendController extends Action
    public function myProcSendAction()
        {
            $fileTypeAction = $this->getParam(\Module\Form\MyForm::ELEM_FILE_TYPE_ACTION);
            $this->assertAllowedToSendTypeAction($fileTypeAction);
     
     
     
            $form = $this->getForm($fileTypeAction);
            if (!$form->isValid($this->getHttpRequest()->getPost())) {
                $this->storeForm($form);
     
     
                $this->getFlashMessenger()
                    ->setNamespace('errors')
                    ->addMessage($this->view->translate('Forms.Error.allFieldsCompleted').' ?');
     
     
                $this->getRedirector()
                    ->setCode(303)
                    ->gotoSimpleAndExit('send', null, null, array('fileTypeAction' => $fileTypeAction));
     
     
                return;
            }
    }
     
     
     private function assertAllowedToSendTypeAction($fileTypeAction)
        {
            if (!Authorization::isAllowed(MyPermission::permission($fileTypeAction))) {
                throw new \Exception\NotAuthorizedException();
            }
        }
    }
    et ma vue:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    <div class="two-column">
        <div class="column column-right fullSizeOnPrint" style="width: 89%;">
            <?php echo $this->form ?>
        </div>
    </div>
    en espérant que ce sera plus clair.. pour vous..

  10. #10
    Membre régulier Avatar de Persistant
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2016
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2016
    Messages : 50
    Points : 73
    Points
    73
    Par défaut
    Merci pour ta réaction..
    Moi je ne te remercie pas par ce que tu n'as pas répondu a mes questions (là ou ca se fini par un "?" )

    Bon, ca fait belle lurette que je ne fait plus de Zend mais je vois déjà pas mal d'erreur dans le morceau de code que tu nous montre.

    Déjà, dans myProcSendAction() y'a une faute ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $form = $this->getForm($fileTypeAction);
    Il faut peupler/alimenter/assigner la vue avec ton $form. De mémoire on fait un truc dur genre $this->view->assigne("form", $form) ou $this->getRenderer()->form = $form; Bref, je ne sais plus, inspire toi des autre controllers

    Ensuite,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!$form->isValid($this->getHttpRequest()->getPost())) {
    Lorsque tu fais le redirect (gotoSimpleAndExit) quand ton formulaire n'est pas validité; de mémoire la requete est en GET et non en POST. C'est a dire que getPost() retourne un tableau vide.

    Et comme on n'a pas le code de de la fonction sendAction() on ne peu pas t'en dire plus

    Dis nous comment tu accède a ton formulaire (quel URI tu tape) Et quel valeur t'attend tu a avoir pour $fileTypeAction.

    PS:
    Il y a encore des choses que je remarque comme le fait que tu ne vérifie pas que la méthode est bien en POST (en gros il y a une vulnérabilité)
    Le fait qu'il semble que tu appel une action depuis une autre action pour mutualiser le traitement de tes formulaires...

  11. #11
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut
    Pour l'erreur dans le navigateur, non le souci ne viens pas de là..

    pour le code copier coller ce n'est que l'html generé dans mon navigateur,
    et oui le form est bien vide, ce n'est pas une erreur..

    j'ai omis de mettre la methode send que corrige ci-dessous..

    voici le controlleur complété:

    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
     
     
    Controller
     
    class MysendController extends Action
    public function myProcSendAction()
        {
            $fileTypeAction = $this->getParam(\Module\Form\MyForm::ELEM_FILE_TYPE_ACTION);
            $this->assertAllowedToSendTypeAction($fileTypeAction);
     
     
            $form = $this->getForm($fileTypeAction);
            if (!$form->isValid($this->getHttpRequest()->getPost())) {
                $this->storeForm($form);
     
                $this->getFlashMessenger()
                    ->setNamespace('errors')
                    ->addMessage($this->view->translate('Forms.Error.allFieldsCompleted').' ?');
     
                $this->getRedirector()
                    ->setCode(303)
                    ->gotoSimpleAndExit('send', null, null, array('fileTypeAction' => $fileTypeAction));
     
                return;
            }
    }
     
     private function assertAllowedToSendTypeAction($fileTypeAction)
        {
            if (!Authorization::isAllowed(MyPermission::permission($fileTypeAction))) {
                throw new \Exception\NotAuthorizedException();
            }
        }
     
     
      public function sendAction()
      {
        $fileTypeAction = $this->getParam('fileTypeAction');
        $this->assertAllowedToSendTypeAction($fileTypeAction);
     
        $this->view->assign('form', $this->getForm($fileTypeAction));
        $this->view->assign('fileTypeAction', $fileTypeAction);
      }
    }
    encore dsl
    peux-tu m'en dire plus sur cette methode "gotoSimpleAndExit" car je n'ai pas tous compris,

    quand je redirige vers mon action la methode doit être GET?

  12. #12
    Membre régulier Avatar de Persistant
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2016
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2016
    Messages : 50
    Points : 73
    Points
    73
    Par défaut
    encore dsl
    Ne soit pas désolé, c'est juste qu'au bout de 140 messages y'a tjrs personne qui t'as rappeler les Règles du forum et en particulier comment poser une question... Je ne retrouve pas les liens donc je te laisse le soins de te renseigner par toi même.

    Sauf erreur de ma part, la fonction storeForm() n'est pas une méthode du Zend Framework. Peux tu nous la montrer ?

    peux-tu m'en dire plus sur cette methode "gotoSimpleAndExit" car je n'ai pas tous compris, quand je redirige vers mon action la methode doit être GET?
    Je ne pourrai pas t'en dire plus que la documentation : https://framework.zend.com/apidoc/1....edirector.html si ce n'est qu'elle utilise très probablement la fonction PHP "native" header() et sans doute exit() (il faudrai regarder le code source de Zend).

    Je n'ai j'amais vu de header("location") en mode POST. Et le protocol HTTP/1.1 a la section 10.3.4 va dans ce sens.

    Dis nous comment tu accède a ton formulaire ...
    Là y'avait un piege :-p Ce n'était pas une question, mais de l'impératif.

    [...]

    Excuse moi sinzen, je vais faire quelques chose de mal. Mais j'ai l'impression que ce poste va s'éterniser. Alors on va faire simple. Je ne te demande même pas de cibler le problème mais simplement de poster tout le code (autre que celui du Zend Framework) nécessaire à la compréhension de ton problème et si t'as de la chance peut être que quelqu’un prendra le temps de lire ton code et de dénicher l’erreur (bête?) Mais sache que pour augmenter tes chances d'avoir une réponse favorable a ta question il aurai fallut que tu lises les règles du forum, comment poser une question, le doc fz


    Exemple : Formulaire vide
    Salutation,

    Je travail avec Zend Framework X.X.X depuis X temps sur une application YZ existante en MVC
    Sur un formulaire:


    Quand il est soumis avec des erreurs, le formulaire html de la page ne contient plus aucun élément alors que ... :



    Merci d'avoir pris le temps de m'écouter,
    Cdlt

    PS: Bonne lecture

  13. #13
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut Réponse au post de Persistant
    Bonjour,

    Je n'ait pas encore lu la doc du forum mais a l'avenir je posterais correctement..

    précedement sur symfony.

    Je travail sur Zend depuis mars 2017,

    Je suis sur la version 1.12.20 de Zend. MVC

    Quand je soumet mon formulaire,
    je redirige vers la route du formulaire et charge le meme formulaire stocker en Session:

    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
     
    class MysendController extends Action
    public function myProcSendAction()
        {
            $fileTypeAction = $this->getParam(\Module\Form\MyForm::ELEM_FILE_TYPE_ACTION);
            $this->assertAllowedToSendTypeAction($fileTypeAction);
     
     
            $form = $this->getForm($fileTypeAction);
            if (!$form->isValid($this->getHttpRequest()->getPost())) {
                $this->storeForm($form);
     
                $this->getFlashMessenger()
                    ->setNamespace('errors')
                    ->addMessage($this->view->translate('Forms.Error.allFieldsCompleted').' ?');
     
                $this->getRedirector()
                    ->setCode(303)
                    ->gotoSimpleAndExit('send', null, null, array('fileTypeAction' => $fileTypeAction));
     
                return;
            }
    }
     
     private function assertAllowedToSendTypeAction($fileTypeAction)
        {
            if (!Authorization::isAllowed(MyPermission::permission($fileTypeAction))) {
                throw new \Exception\NotAuthorizedException();
            }
        }
    }
    voici ma classe Action que herite mon controller:

    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
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
     
    abstract class Action extends \Zend_Controller_Action
    {
        /**
         * Helper to get better code completion
         *
         * @var \Zend_Controller_Action_Helper_ContextSwitch
         */
        protected $contextSwitch;
     
        public function init()
        {
            parent::init();
     
            $this->contextSwitch = $this->_helper->contextSwitch()
                ->setContext('html', array(
                    'suffix' => ''
                ))
                ->setAutoDisableLayout(true)
                ->setAutoJsonSerialization(true)
                ->setDefaultContext('html');
     
            $this->contextSwitch->initContext();
        }
     
        /**
         * Returns flash messenger action helper
         *
         * @return \Zend_Controller_Action_Helper_FlashMessenger
         */
        protected function getFlashMessenger()
        {
            return $this->_helper->getHelper('flashMessenger');
        }
     
        /**
         * Returns redirector action helper
         *
         * @return \Zend_Controller_Action_Helper_Redirector
         */
        protected function getRedirector()
        {
            return $this->_helper->getHelper('redirector');
        }
     
        /**
         * Returns session namespace for the controller
         *
         * @return \Zend_Session_Namespace
         */
        protected function getSessionNamespace()
        {
            return new \Zend_Session_Namespace(get_class($this));
        }
     
        /**
         * Returns view object
         *
         * @return \Zend_View_Abstract
         */
        protected function getView()
        {
            return $this->view;
        }
     
        /**
         * @param $action
         * @param null $controller
         * @param null $module
         * @param array $params
         * @return mixed
         */
        protected function redirectToReturnUrlOr($action, $controller = null, $module = null, $params = array())
        {
            $red = $this->getRedirector()->setCode(303);
     
            if ($this->_getParam('returnurl', false)) {
                $red->gotoUrl(RequestUtils::decodeUrlFromParameter($this->_getParam('returnurl')));
     
                return;
            }
     
            $red->gotoSimple($action, $controller, $module, $params);
            return;
        }
     
        /**
         * Returns whether the value of the given parameter
         * in the request of this controller is empty.
         *
         * @param string $name
         * @return boolean
         * @see \Macq\Controller\Request\Utils::paramNotEmpty( $name, $this->getRequest() )
         */
        protected final function paramNotEmpty($name)
        {
            return RequestUtils::paramNotEmpty($name, $this->getRequest());
        }
     
        /**
         * Returns whether the value of the given parameter
         * in the request of this controller represents a real integer.
         *
         * @param string $name
         * @return boolean
         * @see \Macq\Controller\Request\Utils::paramRepresentsInt( $name, $this->getRequest() )
         */
        protected final function paramRepresentsInt($name)
        {
            return RequestUtils::paramRepresentsInt($name, $this->getRequest());
        }
     
        /**
         * Returns the value of the given parameter
         * in the request of this controller parsed as integer.
         *
         * @param string $name
         * @return int
         * @throws \Zend_Controller_Request_Exception The value for the given parameter cannot be parsed to an integer
         * @see \Macq\Controller\Request\Utils::getParamParsedToInt( $name, $this->getRequest() )
         */
        protected final function getParamParsedToInt($name)
        {
            return RequestUtils::getParamParsedToInt($name, $this->getRequest());
        }
     
        /**
         * Returns whether the value of the given parameter
         * in the request of this controller represents a real boolean.
         *
         * @param string $name
         * @return boolean
         * @see \Macq\Controller\Request\Utils::paramRepresentsBool( $name, $this->getRequest() )
         */
        protected final function paramRepresentsBool($name)
        {
            return RequestUtils::paramRepresentsBool($name, $this->getRequest());
        }
     
        /**
         * Returns the value of the given parameter
         * in the request of this controller parsed as boolean.
         *
         * @param string $name
         * @return bool
         * @throws \Zend_Controller_Request_Exception The value for the given parameter cannot be parsed to a boolean
         * @see \Macq\Controller\Request\Utils::getParamParsedToBool( $name, $this->getRequest() )
         */
        protected final function getParamParsedToBool($name)
        {
            return RequestUtils::getParamParsedToBool($name, $this->getRequest());
        }
     
        /**
         * Returns whether the value of the given parameter
         * in the request of this controller represents a real float.
         *
         * @param string $name
         * @return boolean
         * @see \Macq\Controller\Request\Utils::paramRepresentsFloat( $name, $this->getRequest() )
         */
        protected final function paramRepresentsFloat($name)
        {
            return RequestUtils::paramRepresentsFloat($name, $this->getRequest());
        }
     
        /**
         * Returns the value of the given parameter
         * in the request of this controller parsed as float.
         *
         * @param string $name
         * @return int
         * @throws \Zend_Controller_Request_Exception The value for the given parameter cannot be parsed to a float
         * @see \Macq\Controller\Request\Utils::getParamParsedToFloat( $name, $this->getRequest() )
         */
        protected final function getParamParsedToFloat($name)
        {
            return RequestUtils::getParamParsedToFloat($name, $this->getRequest());
        }
     
        /**
         * Returns the HTTP request of this controller.
         *
         * @return \Zend_Controller_Request_Http
         * @throws \Zend_Controller_Request_Exception The request of this controller is not a HTTP request
         */
        protected final function getHttpRequest()
        {
            if ($this->getRequest() instanceof \Zend_Controller_Request_Http) {
                return $this->getRequest();
            }
     
            throw new \Zend_Controller_Request_Exception('The request is not a HTTP request');
        }
     
        /**
         * Returns the given string translated by the translator registered in the Zend_Registry
         *
         * If there is no translator registered in the Zend_Registry, the given string is returned.
         *
         * @param  string $tag
         * @return string
         */
        protected final function translate($tag)
        {
            if (\Zend_Registry::isRegistered(Translator::REGISTRY_KEY)) {
                /** @var $translate \Zend_Translate_Adapter */
                $translate = \Zend_Registry::get(Translator::REGISTRY_KEY);
                return $translate->translate($tag);
            }
     
            return $tag;
        }
     
        /**
         * Returns form from session (if exists), otherwise it returns a fresh instance
         *
         * @param $form
         * @return \Zend_Form
         */
        protected function getForm($form)
        {
            // Fetch form from session if possible
            $sessionNamespace = $this->getSessionNamespace();
            if (isset($sessionNamespace->form)) {
                $form = $sessionNamespace->form;
                unset($sessionNamespace->form);
            }
            // Otherwise, create one under default configuration
            else {
                $form = new $form();
            }
     
            return $form;
        }
     
        /**
         * Stores form in session.
         *
         * @param \Zend_Form $form
         */
        protected function storeForm(\Zend_Form $form)
        {
            $this->getSessionNamespace()->form = $form;
        }
     
        /**
         * @return \Zend_Log
         */
        public function getLogger()
        {
            return \Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('log');
        }
    }
    voici ma vue:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <div class="two-column">
        <div class="column column-right fullSizeOnPrint" style="width: 89%;">
            <?php echo $this->form ?>
        </div>
    </div>
    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
    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
     
     
    abstract class MyForm extends \Form\Standard
    {
     
        const ELEM_MESSAGE     = 'message';
        const ELEM_SUBMIT      = 'submit';
     
        public function init()
        {
            parent::init();
     
     
            $elem = new \Textarea(self::ELEM_MESSAGE);
            $elem->setLabel('label');
            $elem->setRequired(true);
            $elem->setAttrib('rows', 5);
            $this->addElement($elem);
     
            $elem = new \Submit(self::ELEM_SUBMIT);
            $elem->setIgnore(false);
            $elem->setLabel('add');
            $elem->setOrder(99);
            $this->addElement($elem);
        }
        /**
         * @return mixed
         */
        protected function getMessage()
        {
            return $this->getValue(self::ELEM_MESSAGE);
        }
    }
    class  MySubForm extends Myform
    {
     
        /**
         * @var string
         */
        private $fileTypeAction;
     
     
        public function __construct($fileTypeAction)
        {
            if (!in_array($fileTypeAction, \FileType::getActions())) {
                throw new \UnexpectedValueException('Invalid list type action given.');
            }
     
            $this->fileTypeAction = $fileTypeAction;
     
            parent::__construct();
        }
     
        public function init()
        {
            parent::init();
     
            $this->setAction(
                \Zend_Controller_Front::getInstance()->getRouter()->assemble(
                    array(
                        'module'     => 'MyModule',
                        'action'     => 'myProcSend',
                        'controller' => 'mysend'
                    ),
                    null,
                    true
                )
            );
     
            $elem = new Hidden(self::ELEM_FILE_TYPE_ACTION);
            $elem->setValue($this->fileTypeAction);
            $elem->setRequired();
            $this->addElement($elem);
     
            $elem = new Select(self::ELEM_BLACKLIST);
            if ($this->fileTypeAction === \FileType::TYPE_CONST) {
                $elem->setLabel('MyLabel');
            }
            else {
                $elem->setLabel('MySecondLabel');
            }
       }   
    }
    Merci pour vos réaction.

  14. #14
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut Attente d'une réponse
    Personne pour m'éclairer?

  15. #15
    Membre régulier Avatar de Persistant
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2016
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2016
    Messages : 50
    Points : 73
    Points
    73
    Par défaut
    Bonjour sinzen,

    Je pense que si personne ne répond, c'est par ce que tu n'as pas encore poster tout le code nécessaire a sa compréhension.

    Il semble que le problème viens de la de-sérialisation de ton formulaire via la session. (ou pas)
    Peux tu nous afficher le fichier temporaire stokant la session (regarde la directive session.save_path dans ton php.ini)
    Peux tout nous afficher le code de la désérialisation avec les include/require


    Bonne chance

  16. #16
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut Serialize / Unserialize
    Bonjour Persistant,

    Je comprend pas ta demande au sujet des fichiers temporaires en session?
    Je fais un dump du formulaire tous simplement et je le poste?

    Je ne trouve pas mon fichier de deserialisation.. avec les require et include

    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
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
     
    <?php
    namespace Mod\SharedSessions\Session;
     
    class SessionSerializer
    {
        public static function encode($data) {
            return json_encode(self::toJson($data));
        }
     
        public static function decode($data) {
            return self::fromJson(json_decode($data, true));
        }
     
        private static function toJson($data, &$alreadySerialized = array()) {
            $index = array_search($data, $alreadySerialized, true);
            if ($index !== FALSE && $data === $alreadySerialized[$index])
                return array("__id" => $index);
     
            if ($data instanceof \DateTime)
                return $data->format('c');
     
            if ($data instanceof \Closure) {
                throw new \ReflectionException("Can not serialize " . get_class($data));
            }
     
            if (is_object($data)) {
                $alreadySerialized[] = $data;
                $ref = new \ReflectionObject($data);
     
                $class_representation = array(
                    "__id" => count($alreadySerialized) - 1,
                    "__class" => $ref->getName(),
                    "__language" => "PHP",
                    "__data" => array());
     
                $sleep_properties = NULL;
                if (method_exists($data, "__sleep")) {
                    $sleep_properties = $data->__sleep();
                    if ($sleep_properties == NULL) {
                        error_log("__sleep method of class " . $ref->getName() . " returned NULL -> serialize NULL");
                        return NULL;
                    }
                }
     
                $properties = array();
                foreach ($ref->getProperties() as $property) {
                    if (!$property->isPublic()) $property->setAccessible(true);
                    $properties[$property->getName()] = $property;
                }
     
                $ref_parent_walker = $ref;
                while ($parentRef = $ref_parent_walker->getParentClass()) {
                    if ($parentRef == $ref_parent_walker) break;
                    $ref_parent_walker = $parentRef;
                    foreach ($ref_parent_walker->getProperties() as $property) {
                        if ($property->isPrivate()) { // We don't have access to private properties of parent class in child class
                            $property->setAccessible(true);
                            $properties[$property->getName()] = $property;
                        }
                    }
                }
     
                ksort($properties); // Be sure to sort properties by name because they will be sorted in this order on json_decode
     
                foreach ($properties as $propertyName => $property) {
                    if ($sleep_properties != NULL && !in_array($propertyName, $sleep_properties))
                        continue;
     
                    try {
                        $class_representation["__data"][$propertyName] = self::toJson($property->getValue($data), $alreadySerialized);
                    } catch (\ReflectionException $e) {
                        error_log("Could not serialize field " . $propertyName . " of class " . get_class($data) . ": " . $e->getMessage());
                    }
                }
     
                return $class_representation;
            } else if (is_array($data)) {
                $alreadySerialized[] = $data;
                $representation = array("__id" => count($alreadySerialized) - 1, "__data" => array());
                foreach ($data as $key => $value)
                    $representation["__data"][$key] = self::toJson($value, $alreadySerialized);
                return $representation;
            }
            return $data;
        }
     
        private static function fromJson($data, &$alreadyDeserialized = array()) {
            if (is_string($data) && strlen($data) < 32 && preg_match('/^[0-9]{4}-?[0-9]{2}-?[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}[Z0-9:.,+]+$/', $data) > 0) {
     
                try{
                    $date = new \DateTime($data);
                    if ($date instanceof \DateTime)
                        return $date;
                }catch (\Exception $e){ }
            }
            if (is_array($data)) {
                if (!isset($data["__data"])) {
                    if (!isset($alreadyDeserialized[$data["__id"]])) {
                        throw new \ReflectionException("Could not find already deserialized object of id " . $data["__id"]);
                    }
                    return $alreadyDeserialized[$data["__id"]];
                }
     
                if (isset($data["__class"]) && $data["__language"] == "PHP") {
                    $ref = new \ReflectionClass($data["__class"]);
    	            $representation = self::newInstance($ref);
     
                    $alreadyDeserialized[$data["__id"]] = $representation;
     
                    /** @var \ReflectionProperty[] $properties */
                    $properties = array();
                    foreach ($ref->getProperties() as $property) {
                        if (!$property->isPublic()) $property->setAccessible(true);
                        $properties[$property->getName()] = $property;
                    }
     
                    $ref_parent_walker = $ref;
                    while ($parentRef = $ref_parent_walker->getParentClass()) {
                        if ($parentRef == $ref_parent_walker) break;
                        $ref_parent_walker = $parentRef;
                        foreach ($ref_parent_walker->getProperties() as $property) {
                            if ($property->isPrivate()) { // We don't have access to private properties of parent class in child class
                                $property->setAccessible(true);
                                $properties[$property->getName()] = $property;
                            }
                        }
                    }
     
                    foreach($data["__data"] as $propertyName => $property) {
                        $value = self::fromJson($property, $alreadyDeserialized);
                        if (isset($properties[$propertyName])) {
                            $ref_property = $properties[$propertyName];
                            try {
                                if ($propertyName == "name" || $propertyName == "class") {
                                    $setter = "set" . ucfirst($propertyName);
                                    if ($ref->hasMethod($setter))
                                        $representation->$setter($value);
                                    else if ($ref_property->getModifiers() & \ReflectionMethod::IS_PUBLIC)
                                        $representation->$propertyName = $value;
                                } else
                                    $ref_property->setValue($representation, $value);
                            } catch (\ReflectionException $e) {
                                error_log("Reflection error for field " . $propertyName . " of class " . get_class($representation) . ": " . $e->getMessage() . " on line " . $e->getLine());
                            }
                        } else { // dynamic property
                            $representation->$propertyName = $value;
                        }
                    }
     
                    if (method_exists($representation, "__wakeup"))
                        $representation->__wakeup();
     
                    return $representation;
                } else {
                    $representation = array();
                    $alreadyDeserialized[$data["__id"]] = &$representation;
                    foreach ($data["__data"] as $key => $value) {
                        try {
                            $representation[$key] = self::fromJson($value, $alreadyDeserialized);
                        } catch (\ReflectionException $e) {
                            error_log("Reflection error for field " . $key . ": " . $e->getMessage());
                        }
                    }
                    return $representation;
                }
            }
            return $data;
        }
     
        /**
         * @param \ReflectionClass $type
         * @return mixed
         */
    	private static function newInstance($type) {
    	    if ($type->getName() == "Closure" || strpos($type->getName(), "Reflection") === 0) {
    	        throw new \ReflectionException("Can not instantiante type " . $type->getName());
            }
     
    	    if (method_exists($type, "newInstanceWithoutConstructor")) {
                return $type->newInstanceWithoutConstructor();
            }
     
            if (!$type->isInstantiable()) throw new \ReflectionException("Can not instantiate type " . $type->getName());
     
    		if ($type->hasMethod("__construct")) {
    			$constructor = $type->getMethod("__construct");
    			$params = $constructor->getParameters();
    			$args = array();
    			foreach ($params as $param) {
    				if ($param->isDefaultValueAvailable()) break;
    				else if ($param->allowsNull()) $args[] = NULL;
    				else if ($param->isArray()) $args[] = array();
    				else {
    					$class = $param->getClass();
    					if ($class == NULL)
    						$args[] = "";
    					else
    						$args[] = self::newInstance($class);
    				}				
    			}
    			return $type->newInstanceArgs($args);
    		} else {
    			return $type->newInstance();
    		}
     
    	}
    }
    PS: j'ai poster ce code mais je pense pas qu'il soit utilisé quand je sauvegarde mon formulaire en session..
    Dans mon code je ne serialize pas mon formulaire je fais simplement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // Save form in session namespace
    $this->getSessionNamespace()->form = $form;

  17. #17
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut UPDATE
    Je vous confirme que c'est bien ma class SessionSerializer qui serialise mes formulaire..

    Et voiçi le resultat après la sérialisation:

    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
     
    string(2316) "<form enctype="application/x-www-form-urlencoded" action="/mocontroller/process" method="post"></form>
    <div><li class="hidden"></li>
    <input type="hidden" name="__redirect_invalid" value="/module/controller/add" id="__redirect_invalid"></div>
    <div><li class="hidden"></li>
    <input type="hidden" name="__validation_type" value="add" id="__validation_type"></div>
    <div><label for="monmodel" class="desc optional">Model</label>
    <li></li>
    <div><label for="description" class="desc optional">Description</label>
    <li></li>
    <input type="text" name="description" id="description" value="" class="field text full"></div>
    <div><li class="hidden"></li>
    <input type="hidden" name="id" value="" id="id"></div>
    <div><label for="port" class="desc optional"> Address</label>
    <li></li>
    <input type="text" name="ip" id="ip" value="" class="field text full"></div>
    <div><label for="name" class="desc required">Name *</label>
    <div><li class="buttons"></li>
    <input type="submit" name="submit" id="submit" value="Save" class="ui-state-default ui-corner-all float-right ui-button"></div>
    <div><label for="type" class="desc required">Type *</label>
    J'attends vos réactions.

  18. #18
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut
    J'ai finalement résolu mon souci:

    je fesait un tri sur les element de mon formulaire ce qui le rendait inutilisable.

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

Discussions similaires

  1. Message d'alert si formulaire modifie mais pas valide
    Par gigraphe dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/04/2010, 11h53
  2. message de validation, mais le boutton ne sert à rien!!
    Par dinastar dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 03/04/2006, 23h31
  3. [Formulaire]Un bouton pour valider deux fomulaires
    Par Le_tzao dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/12/2005, 11h08
  4. message SOAP valide
    Par ep31 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 08/11/2005, 10h14
  5. [JSP]formulaire de JSP ne valide pas
    Par rivierem dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 21/10/2004, 14h26

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