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 :

Utilisation de sfDoctrineRouteCollection [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 215
    Par défaut Utilisation de sfDoctrineRouteCollection
    Bonjour,

    Je me documente un peu sur sfDoctrineRouteCollection, et je suis tombé sur ce topic :

    http://www.developpez.net/forums/d92...s/#post5203362

    On y parle de l'option "model_methods" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    produit:
      class: sfDoctrineRouteCollection
      options:
        model:                produit
        module:               produit
        prefix_path:          /produit
        column:               idProduit
        with_wildcard_routes: true
      model_methods:
        list:   <getMaListe>
        object: <getMonObjet>
    <getMaListe> (qui peut être omis si la méthode par défaut donne satisfaction) doit retourner une doctrine_collection des objets à afficher dans la liste

    <getMonObjet> doit retourner un objet du model qui correspond à l'objet recherché et est utilisé pour les edit et show (si show est utilisé).

    J'utilise ces méthodes pour vérifier, dans le cas d'un blog par exemple, si l'utilisateur à bien les droits pour modifier l'article et que la liste des articles ne concerne que les articles de l'utilisateur. Un foward404 permet de résoudre les tentatives de piratage avant même que l'action ne soit appelée
    Je me trouve dans le cas d'un blog justement.

    Je voudrais savoir comment s'y prendre pour vérifier "si l'utilisateur à bien les droits pour modifier l'article et que la liste des articles ne concerne que les articles de l'utilisateur".

    Les model_methods font référence a des méthodes du fichier model/postTable.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
    <?php
    /**
     * Post
     * 
     * This class has been auto-generated by the Doctrine ORM Framework
     */
    class PostTable extends Doctrine_Table
    {
        /**
         * Returns an instance of this class.
         *
         * @return object PostTable
         */
        public static function getInstance()
        {
            return Doctrine_Core::getTable('Post');
        }
     
        public function getMonObjet() {
     
    		// Requete de selection du POST avec l'id du membre en paramètre
    		// Si aucun résultat trouvé, c'est soit parce que le Post n'existe pas ou soit parce que ce n'est pas le POST de l'user
     
    		// Mais comment accéder à l'id du membre dans CETTE méthode ? Impossible.
     
        }
    }
    Est-ce que quelqu'un peut m'éclairer ? Merci

  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
    Citation Envoyé par Niki59 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    		// Mais comment accéder à l'id du membre dans CETTE
    Si l'utilisateur dont tu parles est l'utilisateur connecté donc en session, il est accessible par $this->getUser() dans une action et par sfContext::getInstance()->getUser() ailleurs.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 215
    Par défaut
    Bonjour Herode,

    Merci pour ta réponse, en effet on peut accéder à l'id de l'user via cette méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $user_id = sfContext::getInstance()->getUser()->getGuardUser()->getId();
    J'ai cependant une seconde question.

    Dans ma sfDoctrineRouteCollection, sur quelle action est appelé ma méthode getMaListe ? J'ai essayé les actions index et list, mais apparemment ce n'est pas le cas.

    Et la documentation est très mince là dessus...

    Merci!

  4. #4
    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
    Je n'ai jamais utilisé ces options. Pour gérer mes listes en backend, j'utilise plutôt les options du generator.yml.

    Et en effet, je viens de faire un test avec un backend généré par doctrine, la model_method 'list' ajoutée dans la route n'est pas appelée.

    Je n'en sais pas plus que toi sur le sujet, du coup...

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 215
    Par défaut
    Mince

    Bon j'espère que l'auteur du premier sujet (Michel Rota) croisera mon topic et puisse venir expliquer un peu plus en détails ce dont il parlait

    Sinon voici ce que me donne la commande "app:routes" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    post                         GET, HEAD /post.:sf_format
    post_new                     GET, HEAD /post/new.:sf_format
    post_create                  POST      /post.:sf_format
    post_edit                    GET, HEAD /post/:id/edit.:sf_format
    post_update                  PUT       /post/:id.:sf_format
    post_delete                  DELETE    /post/:id.:sf_format
    post_show                    GET, HEAD /post/:id.:sf_format
    post_object                  GET, HEAD /post/:id/:action.:sf_format
    post_collection              POST      /post/:action/action.:sf_format
    J'ai regardé la route 'post', et elle n'apelle jamais ma méthode getMaListe .

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 215
    Par défaut
    Bonjour,

    Finalement j'ai trouvé. Voici comment appeler la méthode list, ou la méthode object renseigné dans la collection de route sfDoctrineRouteCollection :

    Depuis l'action, pour appeler la méthode object :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->getRoute()->getObject();
    Cette méthode appellera getMonObjet de la librairie PostTable.class.php

    Depuis l'action, pour appeler la méthode list:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->getRoute()->getObjects();
    Cette méthode appellera getMaListe de la librairie PostTable.class.php

    Voila c'était aussi simple que ca.

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

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 16h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 15h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 13h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 17h01
  5. Réponses: 2
    Dernier message: 21/03/2002, 00h01

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