Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/08/2011, 09h58   #1
Candidat au titre de Membre du Club
 
Romain
Inscription : octobre 2008
Messages : 46
Détails du profil
Informations personnelles :
Nom : Romain
Localisation : France, Mayenne (Pays de la Loire)

Informations forums :
Inscription : octobre 2008
Messages : 46
Points : 11
Points : 11
Par défaut Filtres Admingen + Criteria Symfony 1.4

Bonjour, dans le cadre d'une appli, j'ai une liste admingen avec des filtres, cependant j'ai besoin d'ajouter un criteria pour filtrer dans un premier l'affichage global de la liste(je veux que les utilisateurs puisse voir les commandes du marché dans lequel ils sont et pas d'autres).

Le builde Criteria marche bien, mais les filtres après ne marchent plus.

Voici mon code d'action class :

Code :
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
  /**
     * Overrides the preExecute based implementation
     * to set the user from the custom configuration obejct.
     *
     * @return void
     */
    public function preExecute()
    {
        parent::preExecute();
        $this->configuration->setUser($this->getUser());
        $this->checkMarket();
        $this->dispatcher->connect('admin.build_query', array($this,'myBuildCriteria'));
    }
 
 
    /** 
     * Build order list with Criteria
     * 
     * @param sfEvent        $event as eventLoading object
     * @param Doctrine_Query $query as Doctrine Query
     * 
     * @return JSON Array
     */
    public function myBuildCriteria($event, Doctrine_Query $query)
    {
        if ($this->getUser()->getMarket()->getId()) {
            $query=Doctrine::getTable('Order')->createQuery()
            ->select()->from('Order')->where('market_id= ?', $this->getUser()->getMarket()->getId());
        }
        return $query;
    }
Et voici le contenu de mon fichier generator.yml

Code :
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
generator:
  class: sfDoctrineGenerator
  param:
    model_class:           Order
    theme:                 admin
    non_verbose_templates: true
    with_show:             false
    singular:              ~
    plural:                ~
    route_prefix:          order
    with_doctrine_route:   true
    actions_base_class:    sfActions
 
    config:
      actions: ~
      fields:  ~
      list:    
          display: [ order_number, status, created_at, updated_at ]
          object_actions:
              Print Order: ~
              Edit:        ~
              _delete:     ~
 
      filter:  
          display: [ order_number, status, created_at, updated_at ]
      form: 
          display: [ order_number, customer_number, salesman_number, currency_id, purchase_order_number, last_modified_by_id ]   
      edit:    ~
      new:     ~
Je me suis dit que je pouvais mettre le criteria dans l'executeIndex mais apparemment il veut pas l'exécuter a cet endroit là

D'avance Merci
mckilleron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 14h20   #2
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Tu veux que le filtre initial lors de l'affichage t'affiche des données pré-filtrées. Ce filtre serait modifiable, ensuite, par l'utilisateur pour correspondre à ces besoins.

Est-ce cela ?
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 14h25   #3
Candidat au titre de Membre du Club
 
Romain
Inscription : octobre 2008
Messages : 46
Détails du profil
Informations personnelles :
Nom : Romain
Localisation : France, Mayenne (Pays de la Loire)

Informations forums :
Inscription : octobre 2008
Messages : 46
Points : 11
Points : 11
voila, je filtre sur le marché par le criteria, et après je veux filtrer par les champs du filter de mon admingen, mais que ca filtre sur les donées déja préfiltrées
mckilleron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 09h33   #4
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Donc le filtre d'origine ne doit pas pouvoir être modifié par les utilisateurs ?

Ils vont travailler sur une partie des données et dans cette partie des données ils pourront procéder à d'autre filtres et/ou tris ?

Est-ce bien cela ?
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 09h38   #5
Candidat au titre de Membre du Club
 
Romain
Inscription : octobre 2008
Messages : 46
Détails du profil
Informations personnelles :
Nom : Romain
Localisation : France, Mayenne (Pays de la Loire)

Informations forums :
Inscription : octobre 2008
Messages : 46
Points : 11
Points : 11
Exactement,

En fait j'affiche une liste de commandes, chaque commande est rattaché a une boutique, et je veux que l'utilisateur ne puisse que voir les commandes rattachées a sa boutique, et qu'il puisse filtrer dessus.
Sachant que tout a été généré par l'admingen, mais déja les 2/3 des fonctions sont overridés, alors je suis plus a une de plus.
mckilleron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 14h12   #6
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Dans mes souvenirs (je n'ai pas de V1 installée au boulot), tu peux, dans les paramètres de ton admingen, préciser la méthode a appelée pour récupérer la requête initial.

Précise la méthode, écris, dans ton objet du modèle, la méthode qui retourne la bonne requête et roule...

Tous les filtres prendront pour base cette méthode.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 09h02   #7
Candidat au titre de Membre du Club
 
Romain
Inscription : octobre 2008
Messages : 46
Détails du profil
Informations personnelles :
Nom : Romain
Localisation : France, Mayenne (Pays de la Loire)

Informations forums :
Inscription : octobre 2008
Messages : 46
Points : 11
Points : 11
Un grand merci a michel Rotta pour son aide, j'ai trouvé la solution, il suffit de surcharger la méthode BuildQuery(doBuildQuery sous 1.4)

exemple:

Code :
1
2
3
4
5
protected function buildQuery()
{
  return parent::buildQuery()
    ->where('marketid =?'.$user->getMarket()->getId());
}
Je passe le sujet en résolu.
mckilleron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2011, 13h52   #8
Invité de passage
 
Homme Stéphane
Inscription : août 2011
Messages : 1
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 1
Points : 1
Points : 1
Par défaut précision de la version de symfony

bonjour,
je pense que c'est exactement ce que je recherche à faire mais dans un module du frontend que j'ai crée en faisant un doctrine:generate-module et non un generate-admin.

Je voudrait ajouter à toutes les requetes un "andWhere(...)", que ce soit en passant par l'action index, mais aussi filter...

Dans actions.class.php de mon module, j'ai "tenté" de surcharger la méthode buildQuery(), mais elle n'est jamais appellée.

Cela a par contre bien fonctionné en surchageant cette même méthode mais dans ma class moduleFormFilter.

Avez-vous une idée pour ce cas ?
j'utilise sf 1.4.8
Merci par avance.
stephane.isnard est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h10.


 
 
 
 
Partenaires

Hébergement Web