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

Symfony PHP Discussion :

Problème (404 | Not Found | sfError404Exception) après enregistrement validation formulaire [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Par défaut Problème (404 | Not Found | sfError404Exception) après enregistrement validation formulaire
    Bonjour,
    J'ai créé un formulaire pour créer des annonces.
    J'ai cette erreur lors de la validation du formulaire après avoir saisi tous les champs:

    404 | Not Found | sfError404Exception
    Unable to find the Annonce object with the following parameters "array ( 'sf_format' => 'html',)").


    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
     
    at ()
    in SF_ROOT_DIR\lib\vendor\symfony\lib\routing\sfObjectRoute.class.php line 111 ...
        // check the related object
     
        if (!($this->object = $this->getObjectForParameters($this->parameters)) && (!isset($this->options['allow_empty']) || !$this->options['allow_empty']))
     
        {
     
          throw new sfError404Exception(sprintf('Unable to find the %s object with the following parameters "%s").', $this->options['model'], str_replace("\n", '', var_export($this->filterParameters($this->parameters), true))));
     
        }
     
     
        return $this->object;
    at sfObjectRoute->getObject()
    in SF_ROOT_DIR\apps\frontend\modules\ads\actions\actions.class.php line 57
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public function executeCreate(sfWebRequest $request)
     
      {
     
        $this->forward404Unless($request->isMethod(sfRequest::POST));
     
       $this->annonce = $this->getRoute()->getObject();// ligne 57
     
        $this->annonce->setUtilisateur_id($this->getUser()->getAttribute('id'));
     
        $this->form = new AnnonceForm($this->annonce);
    Mon routing.yml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ads:
      class:   sfDoctrineRouteCollection
      options:  
        model: Annonce
        module:               ads
        prefix_path:          /ads
        column:               id
        with_wildcard_routes: true

    Je suis vraiment coincé je ne sais pas pourquoi cette erreur sors maintenant avant je créais une Annonce sans aucun soucis.
    J'avais presque rien modifier.


    Merci de m'aider si vous avez une petite idée.

  2. #2
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Par défaut
    Bonsoir,

    Pourrais tu nous montrer comment tu arrives jusqu'ici (notamment ton formulaire) ?

    Apparemment la requête ne contient pas les paramètres nécessaires (id) qui permettrait a la doctrine route de retourner ton objet...

    A+

    Mathieu

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Par défaut
    Oui bien sur, juste un petite info en plus : en fait quand je rajoute une annonce manuellement dans la base (phpmysql) ça ne bogue plus sauf que cette fois l'annonce que j'ai rajouté depuis le formulaire prend la place de l'annonce que j'ai rajouté manuellement. J'ai l'impression que le formulaire cherche le 1er ID et le remplace et maintenant ça bogue peut être parce qu'il n'y a rien dans ma base. Ca me semble un peu bizard.

    Donc au départ je lance cette URL : http://www.addad.com.localhost/frontend_dev.php/ads/new

    donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php use_stylesheet('job.css') ?>
     
    <h1>New Ad</h1>
     
    <?php include_partial('form', array('form' => $form)) ?>
    mon AnnonceForm.class.php :

    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
     
     
    class AnnonceForm extends BaseAnnonceForm
    {
     
    public function saveEmbeddedForms($con = null, $forms = null)
    {
      if (null === $forms)
      {
        $photos = $this->getValue('newPhotos');
        $forms = $this->embeddedForms;
        foreach ($this->embeddedForms['newPhotos'] as $name => $form)
        {
          if (!isset($photos[$name]))
          {
            unset($forms['newPhotos'][$name]);
          }
        }
      }
     
      return parent::saveEmbeddedForms($con, $forms);
    }
       public function configure()
      {
      //$this->setDefault('Utilisateur_id',$this->getUser()->getAttribute('id'));
       //$this->embedRelation('Photo');
        unset(
           $this['Utilisateur_id'],$this['created_at'], $this['updated_at'],
          $this['expires_at'], $this['is_activated'],$this['isAccomplished']
        );
     
    	$form = new PhotoCollectionForm(null, array(
        'annonce' => $this->getObject(),
        'size'    => 2,
      ));
     // $this->embedRelation('Region');
      //$form2 = new RegionForm();
      //$this->embedForm('Region',$form2);
      $this->embedForm('newPhotos', $form);
     
     }
    }
    donc mon _form :

    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
     
    <?php use_stylesheets_for_form($form) ?>
     
    <?php use_javascript('jquery-1.4.4.min.js') ?> 
    <?php use_javascript('/sfJqueryReloadedPlugin/js/jquery-1.3.2.min.js'); ?>
     
     
    <?php use_javascripts_for_form($form) ?>
    <?php echo form_tag_for($form, '@ads') ?>  
      <table id="job_form">
        <tfoot>
          <tr>
            <td colspan="2">
              <input type="submit" value="Preview your ad" />
            </td>
          </tr>
        </tfoot>
        <tbody>
          <?php echo $form['Categorie_id']->renderRow() ?>
     
          <?php echo $form['Region_id']->renderRow() ?>
    	  <?php echo $form['Departement_id']->renderRow() ?> 
     
    	  <?php //echo $form['Region']['Name']->renderRow() ?> <?php //bug ?>
     
    	  <?php echo $form['CodePostal']->renderRow() ?>
    	  <?php echo $form['Ville']->renderRow() ?>
    	  <?php echo $form['TypeAnnonce']->renderRow() ?>
    	  <?php echo $form['TitreAnnonce']->renderRow() ?>
    	  <?php echo $form['TexteAnnonce']->renderRow() ?>
    	  <?php echo $form['Prix']->renderRow() ?>
    	  <?php echo $form->renderHiddenFields() ?>
    	  <?php foreach ($form['newPhotos'] as $photo): ?>
          <?php echo $photo['caption']->renderRow() ?>
          <?php echo $photo['filename']->renderRow() ?>
          <?php endforeach; ?>
     
        </tbody>
      </table>
    </form>
    Après que je fais Submit pour valider mon formulaire :

    Voilà ce qu'il fait :

    il execute la fonction executeCreate il bug sur la 2eme ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public function executeCreate(sfWebRequest $request)
      {
        $this->forward404Unless($request->isMethod(sfRequest::POST));
        $this->annonce = $this->getRoute()->getObject(); // Bug
        $this->annonce->setUtilisateur_id($this->getUser()->getAttribute('id'));
        $this->form = new AnnonceForm($this->annonce);
        $this->processForm($request, $this->form);
    
        $this->setTemplate('new');
      }
    Voilà le processus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Match route "ads_create" (/ads.:sf_format) for /ads.html with parameters array ( 'module' => 'ads', 'action' => 'create', 'sf_format' => 'html',)
    
    Executing filter "sfRenderingFilter"
    
    Executing filter "sfExecutionFilter"
    
    exec : SET NAMES 'UTF8' - ()
    
    query : SELECT a.id AS a__id, a.utilisateur_id AS a__utilisateur_id, a.categorie_id AS a__categorie_id, a.region_id AS a__region_id, a.departement_id AS a__departement_id, a.codepostal AS a__codepostal, a.ville AS a__ville, a.texteannonce AS a__texteannonce, a.titreannonce AS a__titreannonce, a.prix AS a__prix, a.typeannonce AS a__typeannonce, a.isaccomplished AS a__isaccomplished, a.is_activated AS a__is_activated, a.expires_at AS a__expires_at, a.created_at AS a__created_at, a.updated_at AS a__updated_at FROM annonce a - ()
    
    Unable to find the Annonce object with the following parameters "array ( 'sf_format' => 'html',)").
    
    Send status "HTTP/1.1 404 Not Found"

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Par défaut
    C'est bon problème réglé j'ai modifié :


    le executeCreate et la focntion processForm :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public function executeCreate(sfWebRequest $request)
      {
        $this->forward404Unless($request->isMethod(sfRequest::POST));
     
        $this->form = new AnnonceForm();
        $this->processForm($request, $this->form);
     
        $this->setTemplate('new');
      }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    protected function processForm(sfWebRequest $request, sfForm $form)
      {
        $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
        if ($form->isValid())
        {
    	  //$this->annonce = $this->getRoute()->getObject();
    	  //$this->annonce->setUtilisateur_id($this->getUser()->getAttribute('id'));
    	  $form->getObject()->setUtilisateur_id($this->getUser()->getAttribute('id'));
          $annonce = $form->save();
     
          $this->redirect('ads/edit?id='.$annonce->getId());
        }
      }
    J'ai fait le setter de l'id utilisateur directement dans la fonction processForm setter le champs du formulaire avant la sauvegarde moi je récuperais l'id de l'annonce avant la fonction processForm donc dans le executeCreate d'ou mon erreur.

    Merci.

    Espérant trouver prochainement la solution de mon autre poste sur AJAX :S.

  5. #5
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Par défaut
    Salut,

    T'as même pas eu besoin de nous pour résoudre ton problème...

    Penses au tag [Résolu] !!!

    A+

    Mathieu

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

Discussions similaires

  1. Apex et erreur 404 Not Found
    Par Kazevil dans le forum Administration
    Réponses: 1
    Dernier message: 25/03/2010, 14h47
  2. Echec de Post() avec IdHTTP et 404 not found
    Par randriano dans le forum Web & réseau
    Réponses: 3
    Dernier message: 20/04/2009, 15h49
  3. 404 not found
    Par monsieur77 dans le forum Réseau
    Réponses: 4
    Dernier message: 16/01/2008, 12h15
  4. [phpBB][3] Erreur 404 not found lors de la demande de la page d'installation
    Par juninho dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 14
    Dernier message: 12/01/2008, 19h49
  5. [etch] Pb "404 not found" avec Debmirror
    Par byloute dans le forum Debian
    Réponses: 0
    Dernier message: 31/10/2007, 10h56

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