Revenir
en haut

Amélioration de l’intégration ZF et Twig

14/12/2010 4

Un billet très court pour faire une mise au point sur l’intégration de Twig avec Zend Framework 1.1x.

Pour ceux qui ne sont pas au courant, je vous invite à lire les billets suivants :

J’ai apporté quelques améliorations, notamment grâce aux retours de Mickael Perraud que je remercie au passage.

La librairie supporte maintenant plusieurs moteurs de templates au sein d’une même application. Ceci implique quelques modifications dans la configuration :

resources.view.engines.php.class = "Ano_View_Engine_PhpEngine"
resources.view.engines.php.viewSuffix = "phtml"

resources.view.engines.twig.class = "Ano_ZFTwig_View_Engine_TwigEngine"
resources.view.engines.twig.isDefault = 1
resources.view.engines.twig.viewSuffix = "twig"    
resources.view.engines.twig.options.charset = "utf-8"
resources.view.engines.twig.options.strict_variables = 0
resources.view.engines.twig.options.cache = APPLICATION_PATH "/../var/cache/twig"
resources.view.engines.twig.options.auto_reload = 1
resources.view.engines.twig.options.debug = 0
resources.view.engines.twig.options.trim_blocks = 1    

resources.view.helperPath.My_View_Helper_ = "My/View/Helper"

# Si vous utilisez Zend_Layout
resources.layout.layout = "layout"
resources.layout.layoutPath = APPLICATION_PATH "/views/layouts"

Pour des raisons pratiques (je suppose pour faciliter la migration vers Twig), Mickael a ajouté une aide d’action (et les tests unitaires qui vont avec, merci :p) qui permet de définir le moteur à utiliser selon l’action de contrôleur, grâce à une simple annotation.

Exemple :

    /**
     * @render twig
     */

    public function barAction()
    {

    }

J’ai également ajouté une nouvelle extension : « trans », qui s’utilise comme ceci :

{% trans 'message' %}
{% metaName 'description' with 'My message'|trans %}

Les modifications ont été fusionnées avec la branche « master » sur github : http://github.com/benjamindulau/Ano_ZFTwig

Je vous invite aussi à consulter le README qui a été mis à jour.

Toute cette intégration peut sembler superflue avec l’arrivée des nouvelles versions majeures des frameworks Zend et Symfony, mais beaucoup de projets démarrent encore avec ZF 1.x.

Bon twig !

4 commentaires :

  1. Peter :

    Hello,

    I try integrate ZF with Twig by Ano. All work great, but if I use: {% metaHttpEquiv ‘Content-Type’ with ‘text/html; charset=utf-8′ %} or {% javascript ‘js/jquery.js’ with {‘mode’: ‘prepend’} %} or {% stylesheet ‘css/layout.css’ with {‘mode’: ‘prepend’} %} or something like this, I have an error:

    Fatal error: Uncaught exception ‘Twig_Error_Syntax’ with message ‘Unknown tag name « metaHttpEquiv » in « layout.twig » at line 3′ in /var/www/html/prct/library/Twig/Parser.php on line 141 Twig_Error_Syntax: Unknown tag name « metaHttpEquiv » in « layout.twig » at line 3 in /var/www/html/prct/library/Twig/Parser.php on line 141 Call Stack: 0.0005 332548 1. {main}() /var/www/html/prct/public/index.php:0 0.0850 4199824 2. Zend_Application->run() /var/www/html/prct/public/index.php:26 0.0850 4199824 3. Zend_Application_Bootstrap_Bootstrap->run() /var/www/html/prct/library/Zend/Application.php:366 0.0851 4199880 4. Zend_Controller_Front->dispatch() /var/www/html/prct/library/Zend/Application/Bootstrap/Bootstrap.php:97

    What is wrong ?

    • Hello Peter, sorry for my very late answer.

      I will investigate your error and try to fix it as soon as possible. Also, i’ll try soon to update the code according to the last Twig release.

      Thanks for your feedback :-)

    • @Peter,

      Hey, this is fixed now : http://goo.gl/falE6

      Be careful, the syntax of some tags has changed and the metaHttpEquiv tag doesn’t exist anymore. Take a look at the README file for further informations.

      Cya.

  2. Salut Benjamin,

    J’ai essaye de faire fonctionner un Zend_Pagination avec ton plugin Twig. Je me retrouvais avec une erreur indiquant qu’il n’y a pas de template par default.

    En cherchant, je me suis rendu compte que le helper partial appel la method clearVars() de view et donc plus de donnees dans les variables de l’objet Ano_View.

    Pour corriger tu dois mettre toute les variables de Ano_View (qui sont deja protected) au format $_var par exemple : protected $templateEngines = array(); devient protected $_templateEngines = array();

    Et apres ca passe.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

*

Tags HTML autorisés : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Tag code : [cc lang="langage"][/cc] (ex. [cc lang="php"][/cc])