IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

Où mettre une classe


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut Où mettre une classe
    Bonjour,

    je dois parser des $variables pour supprimer les accents, j'ai le code suivant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    $remplace = array( 
    'à'=>'a', 
    'á'=>'a', 
    'â'=>'a', 
    'ã'=>'a', 
    'ä'=>'a', 
    'å'=>'a', 
    'ò'=>'o', 
    'ó'=>'o', 
    'ô'=>'o', 
    'õ'=>'o', 
    'ö'=>'o', 
    'è'=>'e', 
    'é'=>'e', 
    'ê'=>'e', 
    'ë'=>'e', 
    'ì'=>'i', 
    'í'=>'i', 
    'î'=>'i', 
    'ï'=>'i', 
    'ù'=>'u', 
    'ú'=>'u', 
    'û'=>'u', 
    'ü'=>'u', 
    'ÿ'=>'y', 
    'ñ'=>'n', 
    'ç'=>'c', 
    'ø'=>'0' 
    ); 
    $titre = strtr($titre,$remplace);
    Mais je ne sais pas si je dois faire un plugin, un helper, un model.

    Où mettre ce genre de code pour le réutiliser?

    merci de votre aide.

  2. #2
    Membre éclairé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Par défaut
    Je ne connais pas très bien le modèle MVC, mais en toute logique, pourquoi ne pas faire simplement une classe regroupant toutes ces fonctions utiles (comme celle qui remplace les caractères accentués par exemple) et l'appeler via le framework?

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Tout dépend de l'endroit où tu veux l'utiliser.
    Si c'est dans un controller => action_helper.
    Si c'est dans une vue => view_helper.

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Ok,

    donc si je suis bien, il faut créer une classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class My_class_Utils extend Zend_Controller_Action_Helper
    { 
     
    }
    qui se trouvera donc /library/My/Class/Utils.php

    Et je l'instancie de façon normal ?

    merci de votre aide.

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Ok,

    donc si je suis bien, il faut créer une classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class My_class_Utils extend Zend_Controller_Action_Helper
    { 
     
    }
    qui se trouvera donc /library/My/Class/Utils.php

    Et je l'instancie de façon normal ?

    merci de votre aide.
    Oui pour tout.
    Pour l'instancier, tu peux utiliser Zend_Controller_Action_HelperBroker::addHelper($helper); (voir http://framework.zend.com/manual/fr/...nhelper.broker).

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Je nage un peu beaucoup là

    donc dans mon index.php, j'ai ajouter ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Zend_Controller_Action_HelperBroker::addHelper(new My_Classe_Utils());
    et il me sort une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Catchable fatal error: Argument 1 passed to Zend_Controller_Action_HelperBroker::addHelper() must be an instance of Zend_Controller_Action_Helper_Abstract, instance of My_Classe_Utils given, called in /var/www/pontaury/html/index.php on line 23 and defined in /var/www/pontaury/library/Zend/Controller/Action/HelperBroker.php on line 71

  7. #7
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    On dirait que tu as effectivement besoin soit d'un helper (action helper ou view helper selon le besoin), soit d'un filtre (pour le modèle ou pour la vue). Tu as pas mal d'indications ici : http://julien-pauli.developpez.com/t...actionhelpers/

    Concernant le traitement en lui-même, je pense que tu peux aussi regarder du côté de //TRANSLIT avec iconv, c'est la méthode universelle pour ce type d'opérations.

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Merci de votre aide.

    MaitrePylos

  9. #9
    Membre très actif
    Inscrit en
    Juillet 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 190
    Par défaut
    C'est pas plutot un filtre qu'il faut utiliser dans ce cas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    require_once 'Zend/Filter/Interface.php'; 
    class My_Filter_Accent implements Zend_Filter_Interface
    {
    	public function filter($titre)
    	{
     
    $remplace = array( 
    'à'=>'a', 
    'á'=>'a', 
    'â'=>'a', 
    'ã'=>'a', 
    'ä'=>'a', 
    'å'=>'a', 
    'ò'=>'o', 
    'ó'=>'o', 
    'ô'=>'o', 
    'õ'=>'o', 
    'ö'=>'o', 
    'è'=>'e', 
    'é'=>'e', 
    'ê'=>'e', 
    'ë'=>'e', 
    'ì'=>'i', 
    'í'=>'i', 
    'î'=>'i', 
    'ï'=>'i', 
    'ù'=>'u', 
    'ú'=>'u', 
    'û'=>'u', 
    'ü'=>'u', 
    'ÿ'=>'y', 
    'ñ'=>'n', 
    'ç'=>'c', 
    'ø'=>'0' 
    ); 
    $titre = strtr($titre,$remplace);
     
    	    return $titre;
    	}
    }
    Et je le rangerai dans /library/My/Filter/Accent.php

  10. #10
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    @SQUAT : Mon commentaire sur iconv et //TRANSLIT est tout de même valide... Merci de ne pas refuser en bloc une proposition sous prétexte qu'une partie n'est pas idéale.

  11. #11
    Membre très actif
    Inscrit en
    Juillet 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 190
    Par défaut
    Je ne dis pas le contraire, je pose avant tout une question. Je crois que c'est le role d'un filtre pour ce qu'il veut faire dans son 1er post.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment mettre une classe principal en pause, sans arreter les threads
    Par KOULARK dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 28/11/2009, 22h19
  2. mettre une class dans une autre
    Par digofwall dans le forum Langage
    Réponses: 1
    Dernier message: 04/11/2009, 10h25
  3. [débutante] mettre une classe dans un li qui a déjà un style
    Par lisa.a dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 21/02/2009, 19h26
  4. [VB.Net 2.0] Mettre une class Deprecated
    Par Arkal dans le forum VB.NET
    Réponses: 4
    Dernier message: 09/07/2008, 22h41
  5. Mettre une class sur tous les input sauf les radio
    Par kevinf dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 22/10/2007, 20h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo