appeler une fonction de l'AppController dans un autre Controller

Par FactureHero.com, il y a 11 ans


Hello, voici le sujet :
J'ai une fonction qui resize une image lorsque l'user l'envoie depuis un formulaire. J'aimerai que cette fonction imageResize soit, non pas dans le controller User mais dans l'AppController et pouvoir l'appeler depuis n'importe quel controller.

J'ai donc fait ceci dans l'AppController.php :

//resizer et croper une image function resize_crop_image($max_width, $max_height, $source_file, $dst_dir, $quality = 80) { // traitement }

Et j'appelle la function dans un autre controller (le UsersController.php)

function editmyavatar() { resize_crop_image(150, 150, IMAGES .'avatars' . DS .$file . '.' . $extension, IMAGES .'avatars' . DS . $file . '.' . $extension); }

Mais j'ai une erreur qui m'indique que la fonction resize_crop_image n'existe pas

Error: Call to undefined function resize_crop_image() File: C:\wamp\www\NEO\app\Controller\UsersController.php Line: 761

Une idée ?
Comment parvenir à appeler une fonction de l'AppController, dans n'importe quel controller de l'application ?

Merci de vos lumières :)

2 réponses

Lartak, il y a 11 ans

Bonjour.
Essaies tout simplement comme ceci :

$this->resize_crop_image(/* etc ... */);

Normalement, ça devrait fonctionner sans problème, étant donné que si CakePHP ne trouve pas la fonction dans le controller courant, il recherchera dans le controller qu'il étend.
Mais le mieux, ce serait que tu crées un composant (component) dans lequel tu crées ta fonction, de cette manière, lorsque tu as besoin d'y accéder, il te suffira de le rajouter dans public $components.
Cela te permettra d'avoir une application plus propre.
CakePHP permet plusieurs fonctionnalités, autant les utiliser. :)

FactureHero.com, il y a 11 ans

Merci beaucoup pour ta réponse Lartak, ça fonctionne parfaitement.
Mais tu as raison, je vais organiser le code de manière plus logique pour la suite.