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 :

Redirection indexcontroller et ajax


Sujet :

Zend Framework PHP

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut Redirection indexcontroller et ajax
    à tous !
    après bon nombre d'heures passés à chercher le problème, j'ai enfin réussi à l'identifier ,

    le voici :
    je fais une redirection comme ceci dans mon indexcontroller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $numero_commande = $row->save();
    $this->_redirect('/index/comfac/id/'.$numero_commande);
    et lorsque j'arrive sur cette fameuse page comfac, mes résultats de requête ajax ne sont ni plus si moins que le layout ...

    lorsque je retire mon de ma redirection, mes requêtes ajax sont correctes ...

    je ne peux pas utiliser ce type de redirection de cette manière ????

    Merci d'avance de votre précieuse aide et de vos précieux conseils !!!!!
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Le même mais autrement, on ne sait jamais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    $redirector = $this-> _ helper->getHelper('Redirector');
    $redirector->gotoSimple('index','comfac',NULL,
    array('id'=>$numero_commande));

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Merci de ta réponse !!!

    Je ne connais pas du tout cette méthode,

    j'ai retiré l'espace qu'il y avait entre le $this-> et _helper-> ...
    ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $redirector = $this->_helper->getHelper('redirector');
    $redirector->gotoSimple('index','comfac', NULL, array('id'=>$numero_commande));
    et lorsque je teste ce code, j'ai cette erreur qui m'est retournée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (comfac)' in 
    C:\wamp\www\comfac\library\Zend\Controller\Dispatcher\Standard.php:248 Stack trace: 
    #0 C:\wamp\www\comfac\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) 
    #1 C:\wamp\www\comfac\index.php(45): Zend_Controller_Front->dispatch() 
    #2 {main} thrown in C:\wamp\www\comfac\library\Zend\Controller\Dispatcher\Standard.php on line 248
    Et celle la non plus, je la connais pas ...
    Je vais tenter de me renseigner sur ta méthode, à moins que tu ne vois de quoi parle cette erreur ????

    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Personnellement je trouve l'erreur assez parlante.

    J'ai inversé l'action et le controller

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $redirector->gotoSimple('comfac','index', NULL, array('id'=>$numero_commande));

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 118
    Points : 184
    Points
    184
    Par défaut
    Cyrux,

    Redirector est une aide d'action

    Ton code est juste, l'erreur indique que comfac n'est pas un controller existant.

    Selon l'API DOC
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void gotoSimple (string $action, [string $controller = null], [string $module = null], [ $params = array()])
    PS : mettre en majuscule le Redirector
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $redirector = $this->_helper->getHelper('Redirector');
    Apprendre c'est se faciliter la vie !
    http://e-tuto.fr

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    C'est toujours pas fonctionnel ...
    à mon avis le problème vient de la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $numero_commande = $row->save();
    comme je lui demande de sauvegarder l'intégralité du $row dans numero_commande

    retourner le numero_commande sa c'est fonctionnel,
    mais je me retrouve toujours avec l'intégralité du layout dans mes réponses ajax ...
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Personne n'a d'idées ??

    Dès que j'ajoute un id à ma redirection, tout foire !!!

    BON SANG DE BONSOIR !!!!
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Zend_Debug::dump($numero_commande);
    Cela donne quoi ?

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    J'ai tenté ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $numero_commande = $row->save();
    Zend_Debug::dump($numero_commande);
    Et sa me renvoie 39 (rien de plus rien de moins)...
    39 qui est le bon numéro ...
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  10. #10
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    N'existe il pas un autre moyen que de passer par l'URL pour récupérer
    le dit numéro de commande ??
    cela résoudrait mon problème je pense...


    Voici mon action ajoutercommande de laquelle je dois tirer le numéro
    note : elle se trouve dans mon indexController
    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
     
    function ajoutercommandeAction()
    	{
    		$this->view->title = "Ajouter une commande";
    		$form = new FormulaireCommande();
    		$form->submit->setLabel('Etape suivante =>');
    		$this->view->form = $form;
    			if ($this->_request->isPost()) 
    			{
    				$formData = $this->_request->getPost();
    				if ($form->isValid($formData)) 
    				{
    					$commande = new commandes();
    					$row = $commande->createRow();
    					$row->libelle_commande = $form->getValue('libelle_commande');
    					$row->date_commande = $form->getValue('date_commande');
    					$row->reglement_commande = $form->getValue('reglement_commande');
     
    					$numero_commande = $row->save();
    					// $this->_redirect('/index/comfac/id/'.$numero_commande);
     
    					//autre méthode de redirection 
    					$redirector = $this->_helper->getHelper('Redirector');
    					$redirector->gotoSimple('comfac','index', NULL, array('id'=>$numero_commande));
     
    				} 
    				else 
    				{
    					$form->populate($formData);
    				}
    			}
    	}
    je pourrais peut etre ajouter ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $row->numero_commande = $form->getValue('numero_commande');
    sachant que dans mon formulaireCommande, le numero de la commande est défini comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $id = new Zend_Form_Element_Hidden('id');
    et voici la page phtml ou je souhaite récupérer mon numero_commande :
    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
     
    <html>
    	<head>
    		<title>
    			<?php echo $this->escape($this->title); ?>
    		</title>
    	</head>
    	<form id="form">
    			<fieldset>
    			<LEGEND>&nbsp;Recherche&nbsp;</LEGEND> 
    				<span>
    					Fournisseur :
    					<?php 
    						echo $this->formText("suggestBoxFournisseur", "Tapez les premières lettres pour une suggestion", array('size'=>'53','class'=>'estompe'))
    					?>
    					Piece :
    					<?php
    						echo $this->formText("suggestBoxPiece", "Tapez les premières lettres pour une suggestion", array('size'=>'53','class'=>'estompe'))
    					?>
    				</span>
    			</fieldset>
    	</form>
     
    		<fieldset><LEGEND>&nbsp;Résultats&nbsp;</LEGEND> 				
    				<DIV id="comfac">	
    				</DIV>
    		</fieldset>		
     
    	<body>
    		<!-- Affichage du formulaire comfac -->
    		<?php
    			echo $this->form ;
    		?>
     
    	</body>	
     
    </html>
    que je remplie gràce à ce code provenant de mon indexController :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function comfacAction()
    	{
    		$this->view->title = "Ajout de pieces pour une commande";
    		$form = new FormulaireComfac();
    		$form->submit->setLabel('Ajouter !');
    		$this->view->form = $form;
    		$numero_commande = $this->_request->id;
    		$this->_redirect('/index/AjoutAutrepiece');
    	}
    note : dans la dernière ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->_redirect('/index/AjoutAutrepiece');
    , je vais aussi devoir récupérer le même numéro de commande. surement de la même manière.

    Quelqu'un à une idée ??

    Merci beaucoup de votre aide !!
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  11. #11
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    J'ai beau tourner, retourner, re-retourner, ... le problème dans tous les sens,
    je ne comprends pas du tout le pourquoi du comment ...

    $numero_commande me renvoi 39 et pas le layout complet donc tout est correct !!!!

    ... je ne comprends pas du tout la ...

    please !!
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  12. #12
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Personne n'a la moindre idée, piste ou quoi que ce soit ???

    Merci d'avance !!
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 95
    Points : 97
    Points
    97
    Par défaut
    Pour ne pas avoir le layout dans ton résultat tu as essayé de mettre ceci dans ton action :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->_helper->layout->disableLayout();

  14. #14
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Merci de ta réponse oOXimOo !!
    j'ai effectivement déjà tenté cette ligne de code, c'est pour cela que je suis un peu désespéré ...
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

Discussions similaires

  1. redirection après requête AJAX
    Par splifferwolf dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/06/2010, 15h58
  2. Redirection page sous AJAX
    Par the_zoomer dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 25/03/2010, 10h26
  3. [AJAX] redirection automatique via ajax
    Par sooprano dans le forum AJAX
    Réponses: 9
    Dernier message: 20/05/2009, 16h35
  4. [AJAX] Attraper une redirection 302 en Ajax
    Par Alyx² dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 21/10/2008, 10h51

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