Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 06-07-2008 18:23:14

pozowebs
Membre
Lieu: Gran Canaria
Date d'inscription: 06-07-2008
Messages: 83
Site web

[Résolu][1.5] réutiliser une fonction d'un controller: helper, plugin?

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

 

#2 06-07-2008 20:07:26

neojick
Membre
Date d'inscription: 13-04-2008
Messages: 223
Site web

Re: [Résolu][1.5] réutiliser une fonction d'un controller: helper, plugin?

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]


Chan IRC de ZF en français : zftalk-fr

Hors ligne

 

#3 07-07-2008 00:12:23

pozowebs
Membre
Lieu: Gran Canaria
Date d'inscription: 06-07-2008
Messages: 83
Site web

Re: [Résolu][1.5] réutiliser une fonction d'un controller: helper, plugin?

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

 

#4 07-07-2008 01:25:38

neojick
Membre
Date d'inscription: 13-04-2008
Messages: 223
Site web

Re: [Résolu][1.5] réutiliser une fonction d'un controller: helper, plugin?

Tant mieux si ton pb et résolu. Merci pour le lien, j'irai consulter ça demain.


Chan IRC de ZF en français : zftalk-fr

Hors ligne

 

#5 18-07-2008 11:52:24

pozowebs
Membre
Lieu: Gran Canaria
Date d'inscription: 06-07-2008
Messages: 83
Site web

Re: [Résolu][1.5] réutiliser une fonction d'un controller: helper, plugin?

Bon, suite du probleme (que je croyais resolu): j'ai désormais un problème lorsque ma classe thumb a plusieurs methodes.

Par exemple:

Code:

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

 

#6 18-07-2008 12:07:55

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Résolu][1.5] réutiliser une fonction d'un controller: helper, plugin?

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

Code:

$myThumb = new Thumb(); // tu crées ton instance
$result = $myThumb->titi();

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#7 18-07-2008 12:13:09

pozowebs
Membre
Lieu: Gran Canaria
Date d'inscription: 06-07-2008
Messages: 83
Site web

Re: [Résolu][1.5] réutiliser une fonction d'un controller: helper, plugin?

Merci, je viens de comprendre un truc!! smile

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages