Sur le besoin, ca me rappelle un peu TiramisuPHP (http://
www.nuvole.org/category/tiramisuphp/), une couche en plus de cakePHP
pour pouvoir coder par événement. Peut etre cette solution peut elle t
inspirer?

On Mar 31, 6:34 pm, foxmask <[EMAIL PROTECTED]> wrote:
> Bonjour,
> Je suis arrivé à mes fins :D (tenace le renard ;)
>
> Pour faire court (je detaillerait plus tard avec exemple et tout si ca
> interesse)
>
> j'ai fait :
>
> 1) dans les _prepend.php de mes plugins :
> $this->addBehavior('adminIndexHTML',....);
>
> 2) création d'une helper PcbehaviorHelper :
> contenant les 2 methodes addBehavior et callBehavior.
> plus le callback beforeRender qui lui se charge de faire un
> require_once() des _prepend.php de chaque plugin
>
> 3) appel du Helper dans son controller
> 4) utilisation du Helper dans sa vue :
> $pcbehavior->callBehavior('adminIndexHTML');
>
> et voilà la magie ! :D
>
> Ainsi donc paré, le CMS, accédé depuis la page d'admin, sait combien
> d'articles / bugs / news etc.... sont à modérer
>
> Avantages :
> 1) on evite de toucher au code du controleur admin_index ;
> 2) on etend les fonctionnalité du CMS via ces appels de fonctions.
> 3) on peut du coup créer des "coupes" (comme ils les appellent dans
> SpringFramework) à foison ; il suffit de faire un
> $pcbehavior->callBehavior('FooBar'); et ainsi ; tous les plugins ayant
> un tel callback ; seront appellés en une seule fois à l'endroit
> désiré.
>
> Si je suis un peu brouillon je vous referai un exposé avec exemple
> concret.
> Sinon ca sera dans le code de PunCake ;-)
>
> Cdt.
>
> On 30 mar, 21:58, euphrate_ylb <[EMAIL PROTECTED]> wrote:
>
> > Pas très réglementaire l'appel à une fonction du modele directement
> > dans la vue... Voila peut etre pourquoi il prend une instance de
> > ThemeView pour $this et n arrive pas a trouver $puncake_behaviors
>
> > Mieux vaut faire les choses dans l ordre et passer par le controlleur.
> > Au moins l'ordre naturel sera respecté ;)
> > euphrate_ylb
>
> > On Mar 29, 6:57 pm, foxmask <[EMAIL PROTECTED]> wrote:
>
> > > Bonjour,
> > > Quand je me trouve sur la page d'admin de mon portail, je veux
> > > afficher des infos provenant de tous les plugins en même temps.
>
> > > Pour cela dans mon app_model je créé une fonction addBehavior
>
> > >         public function addBehavior($behavior,$func)
> > >         {
> > >                 if (is_callable($func)) {
> > >                         $this->puncake_behaviors[$behavior][] = $func;
> > >                 }
> > >         }
>
> > > exploité dans un _prepend.php place dans chacun des plugins
> > > exemple :
>
> > > $this->addBehavior('adminIndexHTML',
> > > array('articlesBehavior','getValidateArticles'));
>
> > > ceci permet d'enregistrer la methode getValidateArticles de la classe
> > > articlesBehavior.
>
> > > ensuite je créé une fonction callBehavior (tjs dans app_model)
>
> > >         public function callBehavior($behavior)
> > >         {
> > >         echo "<pre>";
> > >         print_r($this->puncake_behaviors);
> > >         echo "</pre>";
>
> > >                 if (isset($this->puncake_behaviors[$behavior]))
> > >                 {
>
> > >                         $args = func_get_args();
> > >                         array_shift($args);
>
> > >                         $res = '';
>
> > >                         foreach ($this->puncake_behaviors[$behavior] as 
> > > $f) {
> > >                                 $res .= call_user_func_array($f,$args);
> > >                         }
>
> > >                         return $res;
> > >                 }
> > >         }
>
> > > et dans ma vue admin_index.ctp je fais un :
>
> > > <?php AppModel::callBehavior('adminIndexHTML'); ?>
>
> > > pour appeler toutes les methodes (de mes classes) "enregistrées".
>
> > > Soucis :
> > > dans l'etat acutel, le addBehavior fonctionne;
> > > mais le callBehavior produit une erreur dans la vue :
>
> > > Undefined property:  ThemeView::$puncake_behaviors [APP\app_model.php,
> > > line 65]
>
> > > la ligne 65 etant         print_r($this->puncake_behaviors);
>
> > > ce print_r me servait à comprendre pouquoi le isset qui suit est
> > > toujours faux :/
>
> > > 2 Questions subsidiaires :
> > > 1) CakePHP possède-t-il une telle fonctionnalité qui me permette
> > > d'appeler des fonctions de la façon expliquée si oui comment ?
> > > 2) Sinon comment j'evite cette erreur ?
>
> > > Cdt.
--~--~---------~--~----~------------~-------~--~----~

Groupe "Cakephp-fr".
Adresse : [email protected]
Pour résilier  : [EMAIL PROTECTED]
Pour les options : http://groups.google.com/group/cakephp-fr?hl=fr
-~----------~----~----~----~------~----~------~--~---

Répondre à