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 : cakephp-fr@googlegroups.com
Pour résilier  : [EMAIL PROTECTED]
Pour les options : http://groups.google.com/group/cakephp-fr?hl=fr
-~----------~----~----~----~------~----~------~--~---

Répondre à