1. #1
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    septembre 2011
    Messages
    245
    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 : 245
    Points : 75
    Points
    75

    Par défaut [Zend 1.x] Session Zend Framework

    Bonjour,

    Je travail avec Zend framework 1.x et je suis donc assez nouveau avec ce framework

    malgré les similitude avec d'autre framework PHP
    Je suis confronter a un problème que j'aimerai bien evidement résoudre..

    je vais expliquer ci-dessous:

    - j'aimerais sotcker en session mon formulaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    / Save form in session namespace
    $formSession = new \Zend_Session_Namespace(get_class($this));
    $formSession->form = $form;
    - ensuite j'aimerais le recupérer pour rediriger l'utilisateur vers le meme formulaire avec les erreur.. dans le cas ou le formulaire est valide je sotcker les données en BD

    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
     
    protected function getForm($form)
        {
            // Fetch form from session if possible
            $sessionNamespace = $this->getSessionNamespace();
            if (isset($sessionNamespace->form)) {
                $form = $sessionNamespace->form;
    //            \Zend_Debug::dump($form); die;
                unset($sessionNamespace->form);
            }
            // Otherwise, create one under default configuration
            else {
                $form = $this->getFormInstance();
     
                // load model defaults into the form
                if ($form instanceof ModelMap) {
                    $form->mapFromModel($this->getDomainModelInstance());
                } else {// try deprecated method
                    $form->loadModel($this->getDomainModelInstance());
                }
            }
     
            return $form;
        }
    - et finalement ma redirection avec le formulaire recupérer en session:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // set the user input as form values
     // required because isvalid does not set invalid values
    $form->populate($this->getRequest()->getParams());
     
    // Save form in session namespace
     $this->getSessionNamespace()->form = $form;
     
     // Set redirect target to registration page
     $this->getOnFailureRedirectAction($form);
     
    return;
    J'ai ciblé le le problè contrairement au precedant poster créer..

    J'ai également trouvé quelque piste a implementer si cela ne fonctionnerrais

    Post/Redirect/Get - Wikipedia
    J'attend vos réactions
    pour me conseiller sur quel implmentations choisir..(Avec ou sans PRG)

  2. #2
    Membre éprouvé Avatar de Théocrite
    Homme Profil pro
    Architecte technique
    Inscrit en
    février 2009
    Messages
    533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2009
    Messages : 533
    Points : 1 015
    Points
    1 015

    Par défaut

    Bonjour !

    Tu devrais lire le get started de ZF1, il y a un exemple complet dedans

    Je ne vois pas pourquoi tu veux stocker un formulaire en session en fait ?

  3. #3
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    septembre 2011
    Messages
    245
    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 : 245
    Points : 75
    Points
    75

    Par défaut Formulaire en session ?

    Merci pour ta réponse..

    Je veux stocker mon formulaire en session car je redirige l'utilisateur afin de vérifier la validité du formulaire.. Si il y a des erreurs je le redirige toujours vers le même formulaire, sinon je valide le formulaire et affiche un message..

    Ps: par rapport à l'autre post sur le même forum. Je serialize bien mon formulaire..

  4. #4
    Membre éprouvé Avatar de Théocrite
    Homme Profil pro
    Architecte technique
    Inscrit en
    février 2009
    Messages
    533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2009
    Messages : 533
    Points : 1 015
    Points
    1 015

    Par défaut

    Justement, tu n'as pas a mettre le form en session.

    Dans ton action, tu récupères le form (le crée en gros), puis testes si c'est valide, sinon reaffiche : https://framework.zend.com/manual/1....eate-form.html.

  5. #5
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    septembre 2011
    Messages
    245
    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 : 245
    Points : 75
    Points
    75

    Par défaut [Redirection]

    Oui, j'ai bien compris..

    Dans mon cas mon formulaire pointe vers processAction()

    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
     
     public function processAction()
        {
            // Get form
            $form = $this->getForm(null);
     
            // Get service
            $service = $this->getServiceInstance();
     
            // If request parameters pass form validations
            if ($form->isValid($this->getRequest()->getParams())) {
               do stuff...
            }
            // Otherwise, there was a failure
            else {
                // set the user input as form values
                // required because isvalid does not set invalid values
                $form->populate($this->getRequest()->getParams());
     
                // Save form in session namespace
                $this->getSessionNamespace()->form = $form;
     
                // Set redirect target to registration page
                $this->getOnFailureRedirectAction($form);
     
                return;
            }
     
            // Success Redirect
            $this->getOnSuccessRedirectAction($form);
        }
    et mon action add redirige vers les route add:
    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
     
     public function addAction()
        {
            $form = $this->getForm(null);
            $form->setValidationType(Form\CrudForm::VALIDATION_TYPE_ADD);
     
            if ($this->_getParam('setreturnurl', false)) {
                $form->setRedirectOnValid(RequestUtils::decodeUrlFromParameter($this->_getParam('setreturnurl')));
            }
     
            // redirect back to same page on error
            $form->setRedirectOnInvalid($this->view->url());
     
            $this->getView()
                ->assign('form', $form);
        }
    ma function setRedirectOnInvalid:

    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
     
     /**
         * @param $url
         * @return CrudForm
         */
        public function setRedirectOnInvalid($url)
        {
            $elem = $this->getElement(Element\RedirectOnInvalid::FIELD_ID);
            if (!$elem) {
                $elem = new Element\RedirectOnInvalid();
                $this->addElement($elem);
            }
     
            $elem->setValue($url);
     
            return $this;
        }

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

Discussions similaires

  1. Problème entre Zend\Console\Response et Zend\Http\Response
    Par clairetj dans le forum Zend Framework
    Réponses: 0
    Dernier message: 25/04/2016, 10h16
  2. Réponses: 1
    Dernier message: 14/06/2013, 10h29
  3. [zend 1.11] session php variable et déconnexion
    Par yiwen dans le forum Autres composants
    Réponses: 10
    Dernier message: 14/05/2013, 15h43
  4. Session ZEND sous PHP
    Par Stalk3R dans le forum Zend Framework
    Réponses: 9
    Dernier message: 17/09/2011, 18h33
  5. Réponses: 1
    Dernier message: 04/06/2009, 19h45

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