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
-~----------~----~----~----~------~----~------~--~---

Répondre à