Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour, inutile de préciser -vu la question- je suis débutant sur zend (et en MVC).
Pour commencer doucement, j'ai crée un petit exemple pour ecrire des news (titre / texte) avec upload d'images.
Pour l'instant, l'upload d'image se fait dans addimageAction() de mon NewsController.php
Juste après l'upload, je veux creer une thumbnail de l'image, donc dans mon NewsController.php j'ai ajouté une fonction createThumb() qui fait le boulot.
Je voudrais que cette fonction createThumb() soit réutilisable dans d'autres controllers, mais je ne sais pas trop comment faire (Action Helpers, plugin...?).
En ce qui concerne les Action Helpers, je voulais essayer pour voir si ça résoud mon problème, mais je ne sais pas par où commencer pour créer mon premier Action Helper (où le placer dans l'arborescence, que faut-il ajouter au bootstrap.php, et comment l'instancier dans mon NewsController.php?).
Merci d'avance!
Yann.
Dernière modification par pozowebs (18-07-2008 12:13:36)
Hors ligne
Pour que ta fonction createThumb soit réutilisable partout, colle là dans un dossier "Fonctions" par exemple. Comme tu as ton dossier Models, créé toi un dossier Fonctions (lu par le path) et créé une class Thumb dedans avec ta fonction createThumb()
Dans ton controlleur, tu l'appellera de cette façon : Thumb::createThumb();
[HS]
Ta fonction createThumb m'intéresse, je n'ai pas réussi à en trouver une "parfaite" qui ne bouffe pas trop la qualité de l'image.
[/HS]
Hors ligne
ok. J'ai crée un repertoire "functions" dans lequel j'ai mis ma classe Thumb contenant la méthode createThumb().
Puis j'ai ajouté . PATH_SEPARATOR . '../application/functions/' dans le set_include_path() du bootstrap.php
et ça marche, merci! C'était tout simple mais comme je débute je suis un peu perdu!
[HS]pour les thumbs, après avoir testé pas mal de fonctions differentes, j'utilise maintenant celle-ci qui crée des thumbs carrés pas trop pourris: http://www.findmotive.com/2006/08/29/cr … -with-php/
Penser a y ajouter $y = NULL; $x = NULL; -- lire les commentaires -- [/HS]
Dernière modification par pozowebs (07-07-2008 00:13:01)
Hors ligne
Bon, suite du probleme (que je croyais resolu): j'ai désormais un problème lorsque ma classe thumb a plusieurs methodes.
Par exemple:
class Thumb { function titi(){ $this->toto(); } function toto(){ return true; }
Dans mon controller, j'appelle
Thumb::titi();
Ce qui donne l'erreur suivante:
Fatal error: Uncaught exception 'Zend_Controller_Action_Exception' with message 'Method "toto" does not exist and was not trapped in __call()' in /web/library/Zend/Controller/Action.php:481 Stack trace: #0 [internal function]: Zend_Controller_Action->__call('toto', Array) #1 /web/application/functions/Thumb.php(201): Admin_NoticiaController->toto() #2 /web/application/admin/controllers/NoticiaController.php(118): Thumb->titi() #3 /web/library/Zend/Controller/Action.php(502): Admin_NoticiaController->addimageAction() #4 /web/library/Zend/Controller/Dispatcher/Standard.php(293): Zend_Controller_Action->dispatch('addimageAction') #5 /web/library/Zend/Controller/Front.php(914): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controll in /web/library/Zend/Controller/Action.php on line 481
Hors ligne
Le problème est que tu mélanges des méthodes statiques et des méthodes d'instance :
Si tu fais Thumb::titi()
Tu appelles la méthode statique titi(). C'est une méthode de classe, elle n'est associée à aucune instance. donc quand tu fais appelle à $this à l'intérieur, ça ne marche pas, c'est normal, $this n'existe pas.
Il faudrait faire
$myThumb = new Thumb(); // tu crées ton instance $result = $myThumb->titi();
A+, Philippe
Hors ligne
Pages: 1