Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 08-02-2008 14:23:56

lebilien
Membre
Lieu: avranches
Date d'inscription: 19-06-2007
Messages: 270
Site web

Liste des actions par controller

bonjour je voudrais savoir si l'on peut avec un script recupérer la liste des controller et action au sein d'un controller ?

cordialement


http://www.parkaddict.com Gagner des places dans vos parcs préférés

Hors ligne

 

#2 08-02-2008 15:27:55

TiTerm
Membre
Date d'inscription: 01-07-2007
Messages: 175

Re: Liste des actions par controller

Un script c'est beaucoup dire...

Code:

//$class = 'ton controleur'
// Liste toutes les methodes 
$methods = get_class_methods($class);
// On ne converve que les actions
$methods = array_filter($methods,create_function('&$method','return substr($method,-6) === "Action";'));

Dernière modification par TiTerm (08-02-2008 15:54:17)

Hors ligne

 

#3 08-02-2008 16:02:57

lebilien
Membre
Lieu: avranches
Date d'inscription: 19-06-2007
Messages: 270
Site web

Re: Liste des actions par controller

ok sa marche et maintenant comment je peux connaitre tous les controller existant ?

Dernière modification par lebilien (08-02-2008 16:05:47)


http://www.parkaddict.com Gagner des places dans vos parcs préférés

Hors ligne

 

#4 08-02-2008 16:20:25

TiTerm
Membre
Date d'inscription: 01-07-2007
Messages: 175

Re: Liste des actions par controller

Ah j'ai mal lu, je pensais que tu voulais uniquement la liste des actions d'un controlleur.

Bah, pour avoir la liste des controleurs, il suffit de faire une recherche récursive sur le file système

Pour avoir le path où se trouve les controleurs, tu demandes au front.

$frontController = Zend_Controller_Front::getInstance();
$path->getControllerDirectory();

Ensuite tu fais une moulinette pour récupérer les fichiers qui se termine par Controller.php dans ce path.
Avec un petit RecursiveDirectoryIterator() et un RecursiveFilterIterator(), c'est assez vite fait. A partir de là, tu as la liste des fichiers, et depuis le nom du fichier, tu retrouve facilement le nom de la classe.
Fait juste attention au fait que 2 controleurs de même nom peuvent être dans 2 modules différents.

C'est quelque chose que j'ai déjà fait, si vraiment tu bloques, je peux te filer le code.

Dernière modification par TiTerm (08-02-2008 16:22:36)

Hors ligne

 

#5 08-02-2008 16:23:37

lebilien
Membre
Lieu: avranches
Date d'inscription: 19-06-2007
Messages: 270
Site web

Re: Liste des actions par controller

voila mon code

Code:

 $rep = "./application/controllers/";
$dir = opendir($rep);
          while ($f = readdir($dir)) {
   if(is_file($rep.$f)) {
    
            $controlleur=explode(".",$f);
            
            $existenz=$this->existenz($controlleur[0]);
            if($existenz==0){
            
                $this->nom_controlleur=$controlleur[0];
                $this->save();
            }
     
   }

alor sa me donne le nom des controller que je garde ds une table et apre je parcous al table pour aller chercher les action lié au controller merci de ton aide

Dernière modification par Mr.MoOx (08-02-2008 20:52:52)


http://www.parkaddict.com Gagner des places dans vos parcs préférés

Hors ligne

 

#6 08-02-2008 16:35:13

TiTerm
Membre
Date d'inscription: 01-07-2007
Messages: 175

Re: Liste des actions par controller

Avec une telle approche, tu peux simplifier en utilisant glob()

$controllers = glob("./application/controllers/*Controller.php");



Attention, ton approche n'étant pas  récursive, si tu as des modules, cela ne fonctionnera pas.

Hors ligne

 

#7 08-02-2008 16:50:31

lebilien
Membre
Lieu: avranches
Date d'inscription: 19-06-2007
Messages: 270
Site web

Re: Liste des actions par controller

j'ai pas de modules


Merci


http://www.parkaddict.com Gagner des places dans vos parcs préférés

Hors ligne

 

#8 08-02-2008 17:20:11

lebilien
Membre
Lieu: avranches
Date d'inscription: 19-06-2007
Messages: 270
Site web

Re: Liste des actions par controller

par contre j'ai un pb $methods = get_class_methods($class); ne marche que dans le controller ou je l'execute et donc me retourne une erreur si je lui donne un autre controller  comment faire ?

Merci


http://www.parkaddict.com Gagner des places dans vos parcs préférés

Hors ligne

 

#9 08-02-2008 18:43:30

dividy
Membre
Date d'inscription: 21-01-2008
Messages: 21

Re: Liste des actions par controller

Une fois que t'as la liste des controllers, il te suffit de parcourir le répertoire "/views/scripts/[nom de ton controller]/" (*) et tu auras la liste des ses actions (qui ont des vues, évidemment).



(*) modifie ce chemin pour qu'il soit en accord avec ton installation


In Zend, I Trust

Hors ligne

 

#10 11-02-2008 09:16:19

lebilien
Membre
Lieu: avranches
Date d'inscription: 19-06-2007
Messages: 270
Site web

Re: Liste des actions par controller

toute mes action non pas forcement une vue dc merci mais sa me servirai pas de faire cela , il me faut une autre solution .

Merci


http://www.parkaddict.com Gagner des places dans vos parcs préférés

Hors ligne

 

#11 11-02-2008 09:47:17

TiTerm
Membre
Date d'inscription: 01-07-2007
Messages: 175

Re: Liste des actions par controller

A la fonction get_class_methods() tu peux passer le nom d'une classe, donc en l'occurrence, une fois que tu as établis ta liste de contrôleur, tu appelles get_class_methods() avec le nom de chacun des contrôleurs de ta liste.

Hors ligne

 

#12 11-02-2008 10:08:40

lebilien
Membre
Lieu: avranches
Date d'inscription: 19-06-2007
Messages: 270
Site web

Re: Liste des actions par controller

C'est ce que je fais  mais sa ne marche que pour le controller ou je lance la function . En somme j'ai un controller admin qui fait appel a une class controlleur qui comprend une function de recherche de controller  qui fait appeler a une function de recherche d'action je lui passe en param la liste des controllers et   pour le controller admin sa passe mais les autre nom il me dis que le premier argument passé en parametre n'est pas un tableau

Moi sa me parait logique que la function  get_class_methods ne marche que pour le controlleur en cour puisque quand on regarde son fonctionnement  il faut instancier uen classe  et lui passer la classe en param . Hors si je lui passe juste le nom d'un controller comment elle peut savoir ou se situe se controller ( j'ai essayer de passer le chemin complet du controller aussi )

Dernière modification par lebilien (11-02-2008 10:13:59)


http://www.parkaddict.com Gagner des places dans vos parcs préférés

Hors ligne

 

#13 11-02-2008 10:40:18

TiTerm
Membre
Date d'inscription: 01-07-2007
Messages: 175

Re: Liste des actions par controller

Il va falloir faire des efforts de rédaction car tu es plutôt difficile à déchiffrer...

la fonction get_class_methods() peut prendre 2 types d'arguments. Soit une instance, soit un nom de classe.
Dans ton cas, puisque tu as normalement construit un tableau de nom de classe de contrôleur, tu vas utiliser un nom de classe.
Donc admettons que ton tableau soit

Code:

$tab = array ('totoController', 'titiController', 'tutuController');
$tabFile = array (
 'totoController' => 'path vers le fichier qui contient la class totoController',
 'titiController' => 'path vers le fichier qui contient la class titiController',
 'tutuController' => 'path vers le fichier qui contient la class tutuController',
);

Tu fais donc un foreach sur ton tab

Code:

foreach ($tab as $class) {
   // La class n'est pas forcement chargée, il faut donc faire un include de la classe
   include_once($tabFile[$class]);
   $methods = get_class_methods($class);
   // la suite
}

Dernière modification par TiTerm (11-02-2008 10:46:37)

Hors ligne

 

#14 11-02-2008 11:07:13

lebilien
Membre
Lieu: avranches
Date d'inscription: 19-06-2007
Messages: 270
Site web

Re: Liste des actions par controller

Je ferais plus attention dans l'avenir autant pour moi le lundis matin c'est dur  lol  au sinon en rajoutant tous simplement   include_once($tabFile[$class]); avant l'appelle a la function get_class_methods($class); sa marche beaucoup merci de votre aide

Cordialement


http://www.parkaddict.com Gagner des places dans vos parcs préférés

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages