Bonjour,
Je développe actuellement un site web sous cakephp et j'ai un petit problème. Je viens de créer une fonction qui permet de rajouter "class="active"" lorsque l'url corresponds à celle indiqué.
function active($url){
if($url == $this->here || $url != '/' && preg_match("$url/i", $this->here)){
echo 'class="active"';
}
}
J'ai placé cette fonction dans mon AppController, et pour l'appeler depuis mon layout, j'ai fais ceci :
<a href="/"><li <?php AppController::active('/'); ?>>Accueil</li></a>
Ça fonctionne très bien, mais j'ai tout de même une erreur qui s'affiche :
Strict (2048): Non-static method AppController::active() should not be called statically, assuming $this from incompatible context [APP/View/Layouts/default.ctp, line 31]
En l'attente d'une réponse, je continu mes tests ;)
Problème réglé :
Je me suis créé un helper "Function", dans lequel je mettrais des fonctions générales utilisables partout sur le site, dans lequel j'y est mis ma fonction active. J'appelle ensuite ma fonction depuis le layout :
echo $this->Function->active();
Et si tu fais :
public function active($url){
if($url == $this->here || $url != '/' && preg_match("$url/i", $this->here)){
echo 'class="active"';
}
}
Ça me parait normal, tu fais appel a une fonction en mode static alors qu'elle n'est pas static...
Donc change ton appel de fonction, ou change la en static...
@+
Comment je peux faire pour l'appeler autrement? Si je met ma fonction en static, je ne peux plus utiliser le "$this->here".