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 :

Mise au point sur getRoute()->getObject()


Sujet :

PHP

Vue hybride

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

    Informations forums :
    Inscription : Février 2010
    Messages : 62
    Par défaut Mise au point sur getRoute()->getObject()
    Bonjour ,

    Dans la leçon 5 du jobeet , il est dit qu'il est possible de récuperer l'instance d'un objet via les routes , je comprend pas le concept en réalité.

    La route la voici :

    job_show_user:
    url: /job/:company_slug/:location_slug/:id/:position_slug
    class: sfDoctrineRoute
    options: { model: JobeetJob, type: object }
    param: { module: job, action: show }
    requirements:
    id: \d+
    sf_method: [get]

    Ici je comprend bien qu'il faut être dans le executeShow du module job pour récuperer un objet , mais ce que je ne comprend pas c'est comment cet objet est généré via getRoute()->getObject() , et surtout à quoi ca équivaut ?

    Normalement pour déclarer un objet , je fais $this->job = Doctrine_Core::getTable('JobeetJob')->execute();

    et je récupère l'image de la table jobeetJob , comment est ce possible avec les routes ?

  2. #2
    Membre émérite 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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->job = Doctrine_Core::getTable('JobeetJob')->execute();
    ne récupère certainement pas un job précis. Je n'ai jamais appelé execute() sous cette forme, il y a peut-être des arguments par défaut mais il lui faut en principe au moins une requête. Dans le meilleur des cas elle te retourne le premier enregistrement de ta collection - ou quelque chose du genre - donc pas forcément le bon.

    Dans une action, si tu connais l'id de ton job, tu vas plutôt le récupérer avec quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $job = JobeetJobTable::getInstance()->find($id)
    ou dans le cas qui nous intéresse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $job = Doctrine_Core::getTable('JobeetJob')->find($id)
    Pour avoir l'id de ton job tel qu'elle a été déclarée dans l'url, tu interroges ta requête, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $id = $request->getGetParameter('id')
    Or

    1 - la route que tu as déclarée dans ton fichier routing.yml est du type sfDoctrineRoute, qui descend de sfObjectRoute. Cette dernière classe sait qu'elle traite une url associée un objet de type JobeetJob :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    options: { model: JobeetJob, type: object }
    2 - L'identifiant d'un JobeetJob est le champ 'id' (cf. la déclaration dans le schema.yml) et la sfObjectRoute sait où trouver ce champ dans l'url :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    url: /job/:company_slug/:location_slug/:id/:position_slug
    Elle a donc tous les éléments pour instancier l'objet associé à l'url.

Discussions similaires

  1. Réponses: 5
    Dernier message: 04/02/2010, 21h56
  2. mise au point sur le poste de support technique
    Par digger dans le forum Emploi
    Réponses: 2
    Dernier message: 07/05/2008, 12h08
  3. mise au point sur la new, class, stack et heap
    Par cdm1024 dans le forum C++
    Réponses: 1
    Dernier message: 18/03/2008, 15h21

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