Salut,
C'est pas le genre de cas ou tu devrais déclarer $puncake_behaviors en static ?
Mehdi
Le 29/03/08, foxmask<[EMAIL PROTECTED]> a écrit :
>
> 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
-~----------~----~----~----~------~----~------~--~---