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

 PHP Discussion :

404 error by the action "membre/create" : lors d'une création de compte [1.x]


Sujet :

PHP

  1. #1
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut 404 error by the action "membre/create" : lors d'une création de compte
    Bonsoir à tous

    Voila j'essaie de suivre le tuto Symfony de la Ferme du web. Je suis dans la partie Création d'un compte (Chapitres 7, 8 et 9). Je croyais avoir tout bien fait, mais lorsque je recharge ma page, j'ai cette erreur (en frontend_dev.php):

    404 | Not Found | sfError404Exception
    This request has been forwarded to a 404 error page by the action "membre/create".

    Il me semblait pourtant avoir bien suivi ces chapitres !!



    Mon fichier routing.yml contient uniquement ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    create_account:
      url: /
      param: { module: membre, action: create }
    actions.class.php du module membre contient la méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      public function executeCreate(sfWebRequest $request)
      {
        $this->forward404Unless($request->isMethod(sfRequest::POST));   <-- le problème se trouve ici
        $this->form = new MembresForm();
        $this->processForm($request, $this->form);
        $this->setTemplate('new');
      }
    _form.php ( un peu bidouillé )
    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
    <form action="<?php echo url_for('create_account'); ?>" method="post" id="myform">
    	<fieldset>
    		<legend><?php echo 'Create your account'; ?></legend>
    		<table border="0" width="600px" cellpadding="0" cellspacing="0" style="padding-top:20px">
    		<?php foreach ($form as $widget): ?>
    		<?php if (!$widget->isHidden()) { ?>
    		 		<?php echo "<tr><td style='text-align:right';>".$widget->renderLabel(); ?>
    				<?php echo "<font style='padding-right:20px' face='Arial, Helvetica, sans-serif' size='-2'>".$widget->renderHelp()."</font></td>"; ?>
     
    		 		<?php echo "<td>".$widget->render()."</td></tr>"; ?>
     
    		 <?php } else { ?>
    		 		<?php echo "<tr><td style='text-align:right'>".$widget->render()."</td></tr>"; ?>
    		 <?php } ?>
    		<?php endforeach; ?>
    		</table>
    	<p><input type="submit" id='submit' value="<?php echo 'Register'; ?>" /></p>
    	</fieldset>
    </form>

    Voila, si quelqu'un pouvait dans un premier temps m'aiguiller sur la signification de ce message, merci

  2. #2
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Et que donne $request->getMethod() ?

  3. #3
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Je ne connais pas ce tutoriel, je recommande en général le passage par Jobeet, le tutoriel de sensio, mais après tous, pourquoi pas un autre.

    Pour l'erreur 404 elle est en général issue de deux choses, soit un lien qui ne peut être interprété par le système de route de symfony, soit un forward404 ou apparenté, tu as les deux possibilité dans le bout de code que tu as donnés, il faut que tu creuses.

    Normalement, en mode débug, tu as une barre de débug qui apparait, il y a dedans un accès aux logs de génération de l'écran, il est donc relativement simple de suivre le chemin pris par la page et d'où provient le 404.

  4. #4
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    Alors tout d'abord, merci pour vos réponses. Je suis en train de creuser.

    Pour répondre à Herode, le retour de $request->getMethod() est GET. Cela me laisse perplexe. J'imagine que cela devrait etre POST non ?

  5. #5
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    D'après le code que tu nous montre, oui, ça devrait être POST.

    Est-ce que le code HTML du formulaire dans lequel tu cliques sur ton bouton 'submit' est bien le même ?

  6. #6
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    Arf, je pense que je dois avoir un souci avec mon routing car, je ne peux même pas voir la page sur laquelle j'ai mon formulaire. Cette erreur, je l'ai directement !!

  7. #7
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    Bon en fait, le souci a un peu changé :
    Dans mon routing.yml, j'ai rajouté

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    homepage:
      url:   /
      param: { module: membre, action: new }
    Dans le template newSuccess.php, j'ai le formulaire donné précédemment dans lequel se trouve :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="<?php echo url_for('create_account'); ?>" method="post" id="myform">
    dans mon routing.yml, j'ai également :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    create_account:
      url: /
      param: { module: membre, action: create }
    et dans actions.class.php, j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      public function executeCreate(sfWebRequest $request)
      {
    	$this->logMessage('get method = '.$request->getMethod(), 'info');
     
        $this->forward404Unless($request->isMethod(sfRequest::POST));
        $this->form = new MembresForm();
        $this->processForm($request, $this->form);
        $this->setTemplate('new');
      }
    Je constate que je ne passe pas par cette méthode. Le message que je veux explicitement afficher n'y apparait pas. Est-ce mon routing.yml qui ne va pas ?

  8. #8
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    Bon, j'ai résolu mon problème en changeant

    create_account:
    url: /
    param: { module: membre, action: create }

    par

    create_account:
    url: /cree.html
    param: { module: membre, action: create }

    Merci beaucoup Michel Rotta et Herode, gràce à vos questions / observations, vous m'avez mis sur la voie !!

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

Discussions similaires

  1. error code 1005 lors d'une création de table
    Par sebabarre dans le forum Débuter
    Réponses: 7
    Dernier message: 31/10/2012, 12h43
  2. No action instance for path /action could be created
    Par gentil dans le forum Struts 1
    Réponses: 20
    Dernier message: 10/04/2007, 14h54
  3. Réponses: 3
    Dernier message: 17/01/2007, 14h20
  4. Error in the application, lors du Rendu
    Par MatP dans le forum DirectX
    Réponses: 1
    Dernier message: 26/01/2005, 18h02

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