Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 31-07-2009 15:20:32

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

[1.8] Appeler des helpers dans un helper ?

Bonjour, j'ai divisé plusieurs scripts dans des views helpers.

J'aimerais savoir si c'est possible d'appeler des views helpers dans un helper pour ne pas répéter mon code. Certains vont dire mais pourquoi tu fais cela. Et bien j'ai différent niveau de complexité de helpers qui créé des liens avec ma base de donnés et c'est vraiment une question pour réduire le code.

Bref, ce qui est sur c'est qu'on ne peut faire ceci:

Code:

$this->myHelper()

Évidament puisque le $this n'est pas la vue en question...quelqu'un a une idée ?

Hors ligne

 

#2 03-08-2009 08:20:02

Phil
Membre
Lieu: Lyon
Date d'inscription: 10-10-2008
Messages: 58

Re: [1.8] Appeler des helpers dans un helper ?

Hum.
Je sais pas comment est structuré ton application, mais tu ne peux pas utiliser l'héritage et faire après des appels des appels de méthodes dans chaque helper que tu developpes ?

Hors ligne

 

#3 06-08-2009 18:44:59

oswalidos
Membre
Date d'inscription: 12-07-2009
Messages: 39

Re: [1.8] Appeler des helpers dans un helper ?

salut ,
moi je fait comme ça :

Code:

class Zend_View_Helper_Logout {
    
    public $view;

    public function setView(Zend_View_Interface $view)
    {
        $this->view = $view;
    }
        
    function logout($action = null) {
        $auth = Zend_Auth::getInstance()->getIdentity();
        $string = 'vous êtes connecté en tant que : ' . $auth->LOGIN_UTL . ' ';
        
        $string = $string . "<a href=" . $this->view->url(array('controller' => 'index' ,
        'action' => 'logout')) . ">" . "Déconnexion</a>  " ;

        if ($action == null)
        {
        $string = $string .    " <a href=" . ' ' . $this->view->url(
        array('controller' => 'utilisateurs' ,'action' => 'index')) .  ">" .
        "Retour" . "</a>" ;
        }
        
        return $string;
    }
}

setView est appelé implicitement pour avoir l'objet view(appelant le helper en cours d'execution) dans votre herper,en ayant ce dernier vous pouvez appelé n'importe quel view helper ,comme dans le code si dessus : $this->view->url

en fait j'ai trouvé ce truc quelque part sur un blog et je l'ai interpreter et utiliser a ma façon ,j'espere que ce raisonnement est correct , merci de commenter si ce n'est pas le cas smile

Dernière modification par oswalidos (06-08-2009 18:46:18)

Hors ligne

 

#4 06-08-2009 19:30:05

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [1.8] Appeler des helpers dans un helper ?

Oh wow, c'est pas si mal comme solution, bon il faut répéter setView un peu partout mais c'est toujours moins de code qu'une fonction complète ! Merci !

Hors ligne

 

#5 20-08-2009 16:55:38

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [1.8] Appeler des helpers dans un helper ?

Ton script fonctionne bien sauf un problème, lorsque je fais appel à $this->view->MonHelper dans un autre helper, le code fonctionne bien sauf que cette ligne :

Code:

$this->view->connexionBd()

Elle génère un espèce de saut de ligne non désiré. J'ai remarqué que si j'inclus la fonctionne appeler directement dans le même helper (donc ici la fonctionne connexionBd() dans le helper où je programme) l'espace vide n'est plus là.

C'est comme si $this->view retournais un champs vide en créant un saut de ligne. Après vérification dans firebug. Le code html est généré avec un espace vide:

Code:

<div>

Texte provenant de la bd.
</div>

Donc, dans firebug, tout suite apres l'ouverture de la division, il y a cette espace vide. As-tu eu ce problème ?

Hors ligne

 

#6 20-08-2009 17:39:18

Eureka
Membre
Date d'inscription: 18-07-2009
Messages: 81

Re: [1.8] Appeler des helpers dans un helper ?

oswalidos a écrit:

setView est appelé implicitement pour avoir l'objet view(appelant le helper en cours d'execution) dans votre herper,en ayant ce dernier vous pouvez appelé n'importe quel view helper ,comme dans le code si dessus : $this->view->url

Comment ça il est appelé "implicitement" ? Je ne vois à quel moment la méthode est appelée hmm

Hors ligne

 

#7 20-08-2009 18:03:40

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [1.8] Appeler des helpers dans un helper ?

En fait je me suis posé la question et testé son code et en effet, d'une certaine façon, cette fonction est appeler par un autre moyen.

Hors ligne

 

#8 21-08-2009 10:12:48

sidhannowe
Nouveau membre
Lieu: Calais
Date d'inscription: 14-08-2009
Messages: 4
Site web

Re: [1.8] Appeler des helpers dans un helper ?

C'est le framework qui l'appelle automatiquement

CF http://framework.zend.com/manual/fr/zen … ers.custom en bas

Hors ligne

 

#9 21-08-2009 10:26:09

Eureka
Membre
Date d'inscription: 18-07-2009
Messages: 81

Re: [1.8] Appeler des helpers dans un helper ?

Ok merci smile

Hors ligne

 

#10 21-08-2009 11:12:31

tomtom
Membre
Lieu: Strasbourg
Date d'inscription: 07-01-2009
Messages: 14

Re: [1.8] Appeler des helpers dans un helper ?

hello,

on peut aussi faire dériver son helper de Zend_View_Helper_Abstract, du coup la method setView n'a plus besoin d'etre redéclarée wink

Hors ligne

 

#11 21-08-2009 15:40:52

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

Re: [1.8] Appeler des helpers dans un helper ?

bonjour,

je sais pas si c'est hors sujet mais comment on fait  pour récupérer views helpers dans un validate (Zend_Validate).


j'ai essayé :

Code:

public function setView(Zend_View_Interface $view)
    {
        $this->view = $view;
    }

Mais ça n'a pas l'air de fonctionner.


Merci

Dernière modification par GueloSuperStar (21-08-2009 15:41:50)


A+ Guelo Super Star

Hors ligne

 

#12 21-08-2009 16:21:29

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [1.8] Appeler des helpers dans un helper ?

Dans un fichier validate ? Est-ce que tu me nous montrer à quoi ressemble ce fichier ?

Sinon, oublie pas le public $view dans ton code.

Code:

public $view;

public function setView(Zend_View_Interface $view)
    {
        $this->view = $view;
    }

Hors ligne

 

#13 24-08-2009 08:55:53

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

Re: [1.8] Appeler des helpers dans un helper ?

Le fichier se trouve dans library/App/Validate/


Code:

class App_Validate_CheckMail extends Zend_Validate_Abstract{


    const CHECKEMAIL  = 'checkemail';

    public $_view;
    public function setView(Zend_View_Interface $view){
        $this->_view = $view;
    }
    
    protected $_messageTemplates = array(
        self::CHECKEMAIL  => "'%value' is not a valid email"
    );

    public function isValid($value)
    {
      .........
    }


}

J'ai l'impression que je ne rentre pas dans la fonction setView()


Merci

Dernière modification par GueloSuperStar (24-08-2009 08:56:57)


A+ Guelo Super Star

Hors ligne

 

#14 24-08-2009 13:44:45

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [1.8] Appeler des helpers dans un helper ?

GueloSuperStar, le fichier se trouve dans library/app/Validate ?

C'est donc un fichier que tu as ajouté toi-même à la librairie de Zend, je crois que c'est peut-être parce que ton fichier ne se trouve pas dans les helpers qu'il ne reconnait pas la vue. Mais faut dire que je n'ai pas vraiment travailler avec les validate. Un autre point, tu signales que le setView ne semble pas fonctionner mais on ne vois pas dans ton code où est-ce que tu utilise le "$this->view->monHelper()"

Hors ligne

 

#15 26-08-2009 17:36:14

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

Re: [1.8] Appeler des helpers dans un helper ?

probitaille mon fichier se trouve bien à library/App/Validate/

On ne voit pas "$this->view->monHelper()" car il est dans ma fonction isValid.

Je n'ai toujours pas trouver de solution simple et toi ?


A+ Guelo Super Star

Hors ligne

 

#16 26-08-2009 18:00:32

Eureka
Membre
Date d'inscription: 18-07-2009
Messages: 81

Re: [1.8] Appeler des helpers dans un helper ?

Perso je comprends pas trop, Zend_Validate n'est pas une aide de vue, et n'implémente pas Zend_View_Helper_Abstract (si ?), auquel cas il est probablement normal qu'il n'ait pas de lien avec la vue en cours.

Hors ligne

 

#17 26-08-2009 19:28:02

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [1.8] Appeler des helpers dans un helper ?

Je le répète, je n'ai pas travaillé précisément avec les validate mais il me semble qu'ils doivent être associé avec des formulaires non ?

Et puis ce qui pourrait aider, c'est de comprendre dans quel context tu aimerais utiliser un validate, peut-être qu'il y a plus simple même ? Et on n'est pas sensé ajouter des fichiers à l'intérieur de la library, tout doit ce faire dans application normalement ce qui peut troublé les chemins pour relier avec les views helpers.

Hors ligne

 

#18 27-08-2009 08:58:13

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

Re: [1.8] Appeler des helpers dans un helper ?

Les validate sont pas forcement associé à des formulaires nécessairement, tu peux les utiliser un peu ou tu veux je crois.....

Ba ce que je veux faire c'est de créer un validate pour mon formulaire d'authentification afin de vérifier si le mail utilisateur est est bien en base.

Pour les fichiers je pensais que les filtres, validate et plugin ce mettaient dans librairie/Namespace moi nan?


A+ Guelo Super Star

Hors ligne

 

#19 27-08-2009 09:13:11

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [1.8] Appeler des helpers dans un helper ?

Hello,

J'utilise des validateurs pour vérifier l'existence d'un login ou d'un mail en base. Sinon il existe le validateur standard Zend_Validate_Db_RecordExist ou qqch comme ça.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#20 28-08-2009 09:12:03

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

Re: [1.8] Appeler des helpers dans un helper ?

Oui je l'ai vu celui la mais pas encore pratiqué.

Moi le petit problème que j'ai est que les mail de mes client sont situé sur un BASE de donnée en ensuite par rapport à leurs informations dans cette base je doit me connecté à une autre et donc chaque utilisateur à sa propre base de donnée et je rencontre quelque difficulté pour switcher de base en base....

Donc c'est pour ça que je fait un validate pour voir si dans la base il s'y trouve et après j'enchaine avec l'identification (auth).

Si quelqu'un aurait une idée pour faire un traitement propre, je suis preneur .


Merci


A+ Guelo Super Star

Hors ligne

 

#21 01-09-2009 14:07:44

martinsupiot
Membre
Lieu: Nantes
Date d'inscription: 20-03-2007
Messages: 52
Site web

Re: [1.8] Appeler des helpers dans un helper ?

Pour revenir au sujet, ce n'est pas forcément la panacée de mettre la vue dans le helper, on peut plus simplement faire un appel tel que :

Code:

Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger')->addMessage('mon message');

Par exemple

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