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