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 :

[Jobeet Jour 5]Poblème avec slugify [1.x]


Sujet :

PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Par défaut [Jobeet Jour 5]Poblème avec slugify
    Bonjour à vous

    J'ai quelque problème pour la 5ème leçon de Jobeet.
    J'en suis à la partie où l'on coupe les caractères inutiles dans les urls. La page principale (/job) marche parfaitement, mais dès que j'ouvre un job particulier, j'obtiens :

    404 | Not Found | sfError404Exception
    Action "job/SensioLabs" does not exist.
    J'ai bien sur tenté de vider le cache de Simfony, et celui du browers, mais rien n'y fait.

    Mon jobeet.class.php est dans Jobeet\apps\frontend\lib J'ai essayé de le mettre dans Jobeet\lib, mais ça n'a rien changé. Malgré tout, je doute fortement de l'endroit exacte où il faut le mettre. Son code est :

    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
     
    <?php
    //lib/Jobeet.class.php
    class Jobeet
    {
      static public function slugify($text)
      {
        // replace all non letters or digits by -
        $text = preg_replace('/\W+/', '-', $text);
     
        // trim and lowercase
        $text = strtolower(trim($text, '-'));
     
        return $text;
      }
    }
    Le code de rooting.yml est :
    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
     
    # default rules
    homepage:
      url:   /
      param: { module: job, action: index }
     
    default_index:
      url:   /:module
      param: { action: index }
     
    default:
      url:   /:module/:action/*
     
    job_show_user:
      url:     /job/:company_slug/:location_slug/:id/:position_slug
      class:   sfPropelRoute
      options: { model: JobeetJob, type: object }
      param:   { module: job, action: show }
    et celui de jobeetjob.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
     
    <?php
     
    class JobeetJob extends BaseJobeetJob
    {
      public function __toString()
      {
        return sprintf('%s at %s (%s)', $this->getPosition(), $this->getCompany(), $this->getLocation());
      }
      public function getCompanySlug()
     {
        return Jobeet::slugify($this->getCompany());
      }
     
      public function getPositionSlug()
      {
        return Jobeet::slugify($this->getPosition());
      }
     
      public function getLocationSlug()
      {
        return Jobeet::slugify($this->getLocation());
      }
    }
    enfin, mon indexSuccess.php ressemble à :

    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
     
    <!-- apps/frontend/modules/job/templates/indexSuccess.php -->
    <?php use_stylesheet('jobs.css') ?>
     
    <div id="jobs">
      <table class="jobs">
        <?php foreach ($jobeet_job_list as $i => $job): ?>
          <tr class="<?php echo fmod($i, 2) ? 'even' : 'odd' ?>">
            <td class="location"><?php echo $job->getLocation() ?></td>
            <td class="position">
              <a href="<?php echo url_for('job_show_user', $job) ?>">
                <?php echo $job->getPosition() ?>
              </a>
            </td>
            <td class="company"><?php echo $job->getCompany() ?></td>
          </tr>
        <?php endforeach; ?>
      </table>
    </div>
    Je ne vois franchement pas d'où vient le problème. Ça doit être, forcement, une connerie, mais elle m'échappe.

    Je vous remercie d'avance pour votre aide.

    FD00

    [EDIT et soluce]
    J'ai résolu le problème, qui était en amont de la partie slugify : il fallait que dans le routing.yml, la partie "job_show_user" soit en toute première. Aucune idée du pourquoi du comment, mais ça marche.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 43
    Par défaut
    Merci d'avoir édité avec la solution, j'avais exactement le même problème et étonnamment ta solution fonctionne.

    Si quelqu'un a une idée du pourquoi je suis preneur.

    Merci

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Par défaut Bonjour,
    il faut déplacer la route job_show_user en haut dans le routing.yml la solution je l ai trouvé dans un autre forum, voila bon courage

  4. #4
    Membre chevronné Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Par défaut
    Bonjour,

    la solution vient du fait que le fichier de routing est lu de haut en bas.
    Dès qu'une route correspond, le framework l'utilise ce qui, dans votre cas, a du se faire avec la route @default.

    Il est conseillé de supprimer les routes par défaut dans un projet. Personnellement, je ne garde que la route @homepage que je modifie.

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

Discussions similaires

  1. Mettre à jour des tables avec un trigger
    Par Titouf dans le forum Langage SQL
    Réponses: 9
    Dernier message: 20/01/2008, 15h57
  2. mise a jour des colones avec smo
    Par casimir24 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/12/2005, 15h13
  3. Réponses: 3
    Dernier message: 15/11/2005, 18h50
  4. Problème de mise à jour de données avec IBClientDataset
    Par Papino dans le forum Bases de données
    Réponses: 6
    Dernier message: 26/09/2005, 14h04
  5. Poblème avec QuickReport et les TQRDBText
    Par Alain Dionne dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/03/2004, 13h12

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