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

MVC PHP Discussion :

MVC - Couplage Zend et Smarty


Sujet :

MVC PHP

  1. #1
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut MVC - Couplage Zend et Smarty
    Bonjour,

    J'ai envie de coupler Zend et Smarty. Pour ça, quelle est la meilleure solution à votre avis :

    • Utiliser zend view pour attribuer les variables de template et initaliser la page
    • Ou au contraire, remplacer zend view par smarty, et attribuer les variables dans le contrôleur


    ??

    Donnez moi vos avis, j'hésite

  2. #2
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    Salut,

    Je pense que le mieux est d'étendre Zend_View_Abstract si smarty doit etre implémenté dans la totalité de ton projet.

    Un exemple ici:
    http://piranhaworld.free.fr/integrer...framework.html

  3. #3
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    Je vais regarder ça, merci pour ta réponse.

  4. #4
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    Bonsoir,

    Je suis finalement parti sur : http://devzone.zend.com/node/view/id/120, une solution équivalente à celle proposée dans le lien cité plus haut.

    Cependant, j'ai un erreur que j'ai du mal comprendre.

    Dans mon index.php, j'ai bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    set_include_path(implode(PATH_SEPARATOR, array(
        realpath(APPLICATION_PATH . '/../library'),
        get_include_path()
    )));
    Dans mon application ini :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    includePaths.library = APPLICATION_PATH "/../library"
    Et j'ai ajouté une fichier Travello/View/Smarty.php dans le dossier library.

    Ma classe se nomme bien : Travello_View_Smarty

    Pourtant, losque j'appelle ma page en mettant dans le boostrap new Travello_View_Smarty, j'ai une erreur :
    Fatal error: Class 'Travello_View_Smarty' not found in [...]\application\Bootstrap.php on line [...]
    Avez vous une idée de ce qu'il pourrait manquer, ou de ce que je ferai mal ?

    Merci d'avance pour vos réponses

  5. #5
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    C'est normal car tu dois déclarer ton propre espace de nom dans application.ini:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ; Ajout d'un namespace pour les librairies perso
    autoloaderNamespaces[] = "Travello_"

  6. #6
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    Bonjour,

    Merci pour ta réponse, j'ai bien réussi à faire fonctionner le tout avec ta réponse, merci. Cependant, ça m'a permis de m'apercevoir que la solution proposée par ce site était obsolète ... La classe abstraite Zend View correspondant pas à celle fournie, ... ça ne fonctionne pas ...

    Je vais regarder ailleurs, peut-être là, j'aurai peut-être plus de chances :
    http://technology.mediovski.pl/2009/...end-framework/

    Fastidieux tout ça en tous cas ...

  7. #7
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    J'utilise Smarty avec ZF sur un projet mais je regrette amèrement!
    En fait ça me fait perdre plus de temps que ça ne m'en fait gagner, j'ai pas mal de problèmes avec l'intégration de Dojo ou même de certaines aides de vue, puis des pages blanches aussi.
    Depuis je préfère utiliser le moteur de vue par défaut.

  8. #8
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    J'ai en tête d'avoir de beaux templates sans code PHP, avec les avantages qu'on connait à Smarty ...

    D'après ton experience, tu me le déconseillerais ?

  9. #9
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    Non je ne te le déconseille pas car je sais que Smarty c'est pas mal et que ça peut s'intégrer correctement. De plus le site de Zend est fait en partie avec Smarty donc c'est bien une preuve que c'est efficace.
    C'est juste qu'il faut bien maitriser le Framework et tester de fond en comble ton code. Moi je ne l'ai pas fait à l'époque car je débutait avec ZF et résultat, je me retrouve avec un moteur de vue tout pourri!
    En fait c'est juste moi qui n'a pas réussi à bien l'intégrer!
    Dans la Doc de Zend_View ils donnent un exemple d'intégration as-tu été voir?

  10. #10
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    C'est récent ? J'ai déjà parcouru la doc, et je n'ai jamais vu cette partie ... Je vais tester ça au plus vite .


    Merci pour tes réponses, je teste et je reviens développer ce post

  11. #11
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    Bon je me fait la main sur "//Example 2. Initialisation de la vue dans le contrôleur d'action", sachant qu'a terme, je passerai sur la version de l'exemple 1, beaucoup plus propre.

    En attendant, ça me permet d'avoir façe à moi les problématiques du couplage.

    J'en ai justement une qui me pose problème. En effet, dans mon layout Zend_View, j'avais :
    $this->layout()->content

    Ca me permettait de caler le contenu de page dans le layout.

    Depuis le passage à smarty, je n'ai plus accès aux variables PHP dans mon layout smarty (c'était le but), mais du coup, je ne sais pas comment encapsuler ma vue spécifique dans le layout ...

    A noter que quand je fais une erreur dans la vue spécifique (index.phtml par exemple), j'ai bien une erreur qui s'affiche, donc elle est bien parcourue par Smarty.

    Une idée ?

  12. #12
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    Tiens je te file ce que j'ai fait a l'époque.... Bon faudra adapter je pense car ça date de ZF 1.7.8

    A l'époque je faisais comme ça dans mon bootstrap:
    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
     
    // **************************** LAYOUTS ***********************************
     
    // Implementation d'un inflecteur pour adapter à smarty
    $inflector = new Zend_Filter_Inflector(':script.:suffix');
    $inflector->addRules(array(':script' => array('Word_CamelCaseToDash', 'StringToLower'),
    						   'suffix'  => 'tpl'));
     
    Zend_Layout::startMvc(array('layoutPath' => $appPath . '/views/scripts',
    							'inflector' => $inflector));
     
    $view = new EZ_View_Smarty(array('compileDir'=> $appPath.'/templates_c/',
    								 'suffix' => 'tpl',
    								 'debug' => $configMain->debug));
     
    Zend_Loader::loadClass('Zend_Controller_Action_Helper_ViewRenderer');
    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
    $viewRenderer->setView($view)->setViewSuffix('tpl');
    Le fichier Smarty.php tout seul a la racine de l'archive se trouvait dans libary/Zfbook/View/
    Et le dossier Ez se trouvait dans library
    Fichiers attachés Fichiers attachés

  13. #13
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    Je vais regarder ça, mais du côté de l'intégration de la vue au layout, tu as une idée ?

  14. #14
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    Ton layout doit etre aussi en .tpl
    je viens de regarder dans le miens et j'y avais mis ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {layout section="content"}
    Mais bien sûr c'est au regard des scripts que je t'ai fourni précédemment.

  15. #15
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    Salut,

    J'ai tenté avec le : {layout section="content"}

    J'ai également parcouru les fichiers de ton archive et le script à côté mais je pense qu'il me manque un morceau ...

    Tu attribues ça dans ton controller (que je n'ai pas du coup) ? Ou il me manque un morceau de la logique ^^

    J'ai l'erreur suivante :
    Fatal error: Smarty error: [in layout.phtml line 28]: syntax error: unrecognized tag 'layout' (Smarty_Compiler.class.php, line 590)
    Une idée ?

  16. #16
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    Je suis étonné de voir que ton template se nomme layout.phtml c'est fait exprès?

    Dans mon appli j'ai créé un script /application/views/scripts/layout.tpl
    qui est mon gabarit principal
    Ensuite tout les autres scripts ont aussi l'extension .tpl

    La configuration de Smarty se fait au bootstrap de l'application, donc dans ton fichier bootstrap.php tu doit avoir une methode _initView() Contenant le code :
    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
     
    // bootstrap.php
    protected function _initView() {
     
    // **************************** LAYOUTS ***********************************
     
    // Implementation d'un inflecteur pour adapter à smarty
    $inflector = new Zend_Filter_Inflector(':script.:suffix');
    $inflector->addRules(array(':script' => array('Word_CamelCaseToDash', 'StringToLower'),
    						   'suffix'  => 'tpl'));
     
    Zend_Layout::startMvc(array('layoutPath' => $appPath . '/views/scripts',
    							'inflector' => $inflector));
     
    $view = new EZ_View_Smarty(array('compileDir'=> $appPath.'/templates_c/',
    								 'suffix' => 'tpl',
    								 'debug' => $configMain->debug));
     
    Zend_Loader::loadClass('Zend_Controller_Action_Helper_ViewRenderer');
    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
    $viewRenderer->setView($view)->setViewSuffix('tpl');
    return $view;
     }

  17. #17
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    Oui, l'extension des templates, je ne l'ai pas changé pour le moment, ce n'est pas très important.

    Ce que je retrouve pas dans ton code, c'est l'endroit où tu permet qu'en utilisant {layout section="content"}, ça inclut le contenu courant. C'est une méthode magique, une assignation ?

  18. #18
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    La gestion de cette variable est effectuée dans Ez/View/Smarty/Plugin/Standard
    tu as la méthode layoutFonction et je suis surpris qu'il ne la trouve pas!

  19. #19
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    Je n'utilise pas tes composants, mais bien ceux fournis dans la doc de Zend. J'essaie d'utiliser ce que tu me fournis pour trouver les clés de la bonne intégration des éléments de la doc.

    Ce qui me surprend, c'est que Smarty parcours bien le layout.phtml et index.phtml, mais n'inclut pas l'un dans l'autre ...

    Soit il me manque un tag, soit il me manque un bout de code ...

    Je regarde du côté de ce que tu m'as envoyé, mais ça a l'air d'être clairement une autre direction.

    Je suis un peu perdu pour le coup ...

  20. #20
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    Oui c vrai que ce n'est pas simple!
    Et la doc de ZF n'est pas suffisante pour faire tourner proprement Smarty.
    C'est pour cela que j'ai utilisé ces script pour mon projet.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 4 1234 DernièreDernière

Discussions similaires

  1. [CDD/CDI] Dév Web: PHP5(oo), Zend, Symfony, Smarty, MVC, Joomla, MySql 5, Ajax..
    Par freelance2010 dans le forum Demandes
    Réponses: 0
    Dernier message: 30/01/2010, 12h48
  2. MVC et Zend Framework
    Par srsissokho dans le forum Zend Framework
    Réponses: 1
    Dernier message: 04/05/2008, 23h20
  3. Débugger une application MVC avec Zend Studio
    Par StefC30 dans le forum Zend Studio
    Réponses: 5
    Dernier message: 16/04/2008, 22h47
  4. Réponses: 1
    Dernier message: 28/11/2007, 11h52
  5. Interet du mécanisme MVC du Zend framework
    Par Graffito dans le forum MVC
    Réponses: 4
    Dernier message: 28/06/2007, 00h35

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