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
Réponse acceptée

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. :)

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.