je suis passé par
<?php AppModel::callBehavior('adminIndexHTML'); ?>
que parceque
<?php $this->callBehavior('adminIndexHTML'); ?>
pose le même probleme
Call to undefined method ThemeView::callBehavior() in
Si je mets mon addBehavior dans un component et le callBehavior dans
un helper ; evidement mon array puncake_behaviors est vide.
Donc je cherche un moyen d'avoir mon array puncake_behaviors "global"
à toute mon appli ainsi que callBehavior.
On 29 mar, 18:52, "Mehdi AMINI" <[EMAIL PROTECTED]> wrote:
> 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
-~----------~----~----~----~------~----~------~--~---