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

MVC PHP Discussion :

_forward fait (presque) planter Apache


Sujet :

MVC PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 25
    Points : 20
    Points
    20
    Par défaut _forward fait (presque) planter Apache
    Bonjour,

    J'ai un problème avec _forward : ca fait planter apache. En fait, pas completement planter : le processus continue mais dans 'error.log', il me marque qu'il a rencontré un 'segementation fault' et donc le processeur s'emballe +/- 60% tant que j'arrete pas le chargement de la page.

    Ce que je veux faire : j'ai une action 'gestion' (une sorte de panneau de gestion)dans un controlleur 'membre', et lorsque'il choisisse 'newsletter', je veux qu'il puisse gerer leur newsletter. Mais comme je ne veux pas quiiter la page qui est mon panneau de gestion, je fais un forward pour executer le code du controlleur 'newsletter'.
    J'espère être assez clair.

    Voici les codes correspondant :
    pour l'action gestion, le forward est dans le cas du param 'newsletter' :
    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 gestionAction()
    	{
    		$this->view->titre = 'Console de gestion';
     
    		$membresTable = new Membres();
    		$membre = $membresTable->getMembre($this->auth->getIdentity()->id_mbr);
     
    		$module = 'defaut';
    		$param = $this->getRequest()->getParam('cat');
    		switch( $param ) :
    			case 'mdp' :
    				$module = 'modif_mdp';
     
    				if ( $this->getRequest()->isPost() ) :				
     
    				endif;
    			break;
     
    			case 'documents':
    				$module = 'documents';
    			break;
     
    			case 'newsletter' :
    				$module = 'newsletter';
    				$this->_forward('index','newsletter');
    			break;
    		endswitch;
     
    		$this->view->module = $module;
    	}
    La fonction index du controlleur 'newsletter' : (ne contient rien, et le fichier template a juste une phrase de test)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	public function indexAction()
    	{
     
    	}
    Merci de votre aide.
    Je suis aussi ouvert à tous conseil s'il existe une meilleure solution pour faire ce que je veux

    Nicolas

  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
    Tu essaye donc de ramener l'action d'un autre controlleur, dans ton action gestion, et cela avec tous ce qui s'ensuit (view html....)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Oui, c'est ca. J'ai deja utilisé le _forward, et même réussi à le faire fonctionner . Donc je ne comprend pas pourquoi, cette fois ci, non seulement, ca ne fonctionne pas mais surtout Apache plante

    (Effectivement, le _forward permet, où il est appelé, de modifier la chaîne de dispatch mais sans modifier l'url. Un exemple typique est d'afficher le formulaire de login où que l'on soit, si on n'est pas connecté, cela sans rediriger)

  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
    Oui, mais le _forward permet surtout de ramener également l'ensemble du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->_request->getParams()
    .

    Je pense que l'idéal serais de rester dans le même contrôleur

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Mais j'utilise ailleurs le forward, meme inter controlleur, et sans problème ...
    Est ce que le mettre dans un switch peut causer problème ?
    J'ai fait 3 autres tests :
    • si je met le forward après le switch (avec un if crados) => pareil
    • si je redirige vers un autre controlleur par exemple, auth/login ou membre/liste => pareil
    • si je redirige vers une autre action du même controlleur => pareil


    La "desesperitude" me guette

  6. #6
    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
    Oui, mais ici tu essaye de ramener un action, et non pas y aller.

    essaye ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    public function indexAction()
    	{
                   $this->_helper->resetHelpers();
    	}

  7. #7
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    _forward() ne déclenche pas immédiatement l'action visée, il faut attendre que l'exécution de l'action courante se termine. Et en principe une action contenant un _forward() ne devrait pas renvoyer de vue (c'est la dernière action "forwardée" qui est censée le faire), c'est peut-être ce qui explique ton plantage (une boucle infinie ?).

    Je te suggère de mettre un return juste après ton _forward(), et de voir ce que ça donne...
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

Discussions similaires

  1. [Web Service] Mon webservice fait planter Apache
    Par berceker united dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 07/06/2010, 17h28
  2. [MySQL] PHP fait planter Apache
    Par osuwariboy dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/06/2010, 20h59
  3. la valeur du NLS_LANG fait planter Apache
    Par Benoit7114 dans le forum Apache
    Réponses: 1
    Dernier message: 05/01/2010, 12h22
  4. [ZF 1.9] Validateur qui fait planter Apache
    Par mrjay42 dans le forum Zend_Form
    Réponses: 2
    Dernier message: 14/11/2009, 15h48
  5. [Lomboz][JSP]Le paramètre prefix de taglib fait tout planter
    Par MasterMic dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 20/06/2005, 15h47

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