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

MVC PHP Discussion :

logique de développement


Sujet :

MVC PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Par défaut logique de développement
    Bonjour à tous, débutant sous Zend 1.7, j'ai besoin de vos précieux conseils. J'ai parcourus pas mal de tutos et je commence à comprendre l'approche MVC mais j'ai encore un peu de mal.

    Je développe un annuaire et j'ai besoin de récupérer dans ma vue index une liste des domaines d'activités et sous domaines d'activités.

    1. J'ai une table mysql "ifs_activities" (id, parent_id,name)

    2.mon controleur index

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class AnnuaireController extends Zend_Controller_Action
    {    
        public function indexAction()    {                
            $activities = new Activity();        
            $this->view->activities = $activities->getParent();        
     
        }
     
    }
    3.mon modèle


    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
     
    class Activity extends Zend_Db_Table_Abstract
    {
        protected $_name = 'ifs_activities';            
        protected $_primary = 'id';
     
        public function getChildren(){        
            ...
        }   
     
    //je recupere ici les activités parent dont le parent_id = 0
        public function getParent(){                        
            $select = $this->select()->where('parent_id = ?', '0');
            $Activity_Row = $this->fetchAll($select);
            return $Activity_Row;
     
        }
     
    }
    4. ma vue Index

    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
     
    <div>
    <?php foreach($this->activities as $activity) : ?>
     
        <ul><li><?php echo $this->escape($activity->name);?>
            <ul>
            <?php foreach($activity->getChildren() as $subActivity) : ?>
     
                <li>            
                <?php echo $this->escape($subActivity->name);?>
                </li>
     
            <?php endforeach; ?>
            </ul>
     
        </li></ul>
     
    <?php endforeach; ?>
    </div>
    donc ici pas de problème pour afficher les activités parente mais je ne sais pas comment récupérer les enfant de chacunes d'elles au niveau de ma fonction getChildren(). Dois-je utiliser un helper ?

    merci d'avance et j'espère que j'ai pas tout faux :-)

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    Si j'ai bien compris, l'inconvénient d'utiliser une méthode de AnnuaireController pour récupérer des activités hiérarchisées, c'est que tu vas exécuter une requête sur ta base de données pour chaque activité parente.

    C'est à dire une requête pour récupérer les activités de niveau 0, pour chaque activité récupérée, un requête pour récupérer ses enfants, etc... Ce n'est pas l'idéal pour les performances.

    Une meilleur solution il me semble serait d'avoir une méthode getActivities de AnnuaireController qui permette de récupérer en une seule fois la hiérarchie de tes activités, soit sous forme d'objet, soit sous forme de simple tableau associatif multidimensionnel, par exemple :
    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
    array(
    0 => array(
        'name' => 'activité 0',
        'activities' => array(
            0 => array(
                'name' => 'activité 00',
                'activites' => null),
            1 => array(
                'name' => 'activité 01',
                'activites' => null)
            ),
    1 => array(
        'name' => 'activité 1',
        'activities' => array(
            0 => array(
                'name' => 'activité 10',
                'activites' => null),
            1 => array(
                'name' => 'activité 11',
                'activites' => null)
            )
    ...
    )

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 98
    Par défaut
    cela n'a rien a voir avec le framework Zend mais as tu déjà regardé les arborescences par intervalles ?

    http://sqlpro.developpez.com/cours/arborescence/

Discussions similaires

  1. role de la programmation logique dans le développement de la pensé algorithmique de programmeur
    Par ay-escobar dans le forum Débats sur le développement - Le Best Of
    Réponses: 0
    Dernier message: 24/02/2014, 22h55
  2. question sur logique de développement
    Par Finality dans le forum Windows Communication Foundation
    Réponses: 1
    Dernier message: 06/01/2009, 10h47
  3. Comment Développer en équipe ?
    Par christ_mallet dans le forum Débats sur le développement - Le Best Of
    Réponses: 45
    Dernier message: 19/11/2007, 00h15
  4. Quel outil choisir pour un développement SQL-Server ?
    Par Mouse dans le forum Débats sur le développement - Le Best Of
    Réponses: 23
    Dernier message: 12/08/2003, 06h23
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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