bballizlife's blog

Aller au contenu | Aller au menu | Aller à la recherche

jeudi 24 juillet 2008

Utiliser les librairies du Zend Framework depuis Jelix, c'est intégré

Il y a un moment maintenant, je vous avais présenté un plugin Jelix permettant de faciliter l'utilisation des librairies du Zend Framework.

Comme ce plugin pourrait servir à bien d'autres que moi et permettre aux Jelixians d'avoir à disposition les librairies intéressantes du Zend Framework, il a été finalement intégré directement dans Jelix. Il sera donc disponible dans la version 1.1 (et dès demain dans les nightly build du trunk).

Pour l'utiliser :

  • copier le fichier lib/jelix/plugins/coord/zendframework/zendframework.coord.ini.php.dist vers votreappli/var/config/zendframework.coord.ini.php
  • configurer la variable zendLibPath dans ce fichier de configuration
  • activer le plugin dans le fichier de configuration de votre application :
[coordplugins]
zendframework = zendframework.coord.ini.php

Comme vous ne voudrez certainement pas charger inutilement le loader du Zend Framework à chaque action de votre application, il faudra explicitement déclarer que vous voulez vous servir de ses librairies. Cela se fait avec la variable de classe $pluginParams du controller (ici je n'active le ZF que pour l'action fooPdf de mon controller) :

public $pluginParams = array('fooPdf' => array('zf.active' => true));

Ensuite libre à vous, dans votre action ou dans une classe métier qui sera utilisée dans cette action, d'utiliser les librairies du ZF. Je reprends l'exemple que j'avais précédemment donné avec Zend_Pdf :

function fooPdf() {
    $rep = $this->getResponse('binary');

    Zend_Loader::loadClass('Zend_Pdf');
    $pdf = new Zend_Pdf();
    $pdf->pages = ($page = $pdf->newPage('A4'));
    $font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA);
    $page->setFont($font, 32);
    $page->drawText('Zend Framework with Jelix !', 120, 500);        
       
    $rep->content = $pdf->render();
    $rep->outputFileName = 'fooo.pdf';
    $rep->mimeType = 'application/pdf';

    return $rep;

}

Dans ce cas précis il n'est pas exclu que je propose une réponse personnalisée jResponseZfPdf pour mapper de manière plus élégante l'utilisation des pdf dans Jelix avec Zend_Pdf.

, , ,

samedi 26 mai 2007

Utiliser le Zend framework avec Jelix

J'avais besoin d'utiliser une classe pour manipuler les pdf en php. En lisant la documentation, j'ai trouvé que la librairie pdf du Zend framework convenait très bien à mes besoins.

Comme l'application pour laquelle j'ai besoin de ceci est développée avec Jelix et comme je n'ai pas plus de raisons que cela de changer de framework, j'ai écrit un plugin pour Jelix me permettant de charger facilement les librairies du Zend framework.

Vous pouvez donc télécharger le plugin zendFramework pour Jelix. Ce plugin est expérimental mais semble très fonctionner chez moi pour le moment. Tous les retours d'utilisation sont les bienvenus.

Comme tout bon plugin Jelix, il vous suffit de :

  • copier le plugin dans le répertoire plugins/ de votre application
  • copier le fichier de configuration du plugin , zendFramework.plugin.ini.php, dans le répertoire var/config/ de l'application
  • éditer le fichier de configuration pour définir la variable zendLibPath avec le chemin absolu vers le répertoire library du Zend Framework sur votre machine.
  • déclarer le plugin dans la section [plugins] du fichier var/config/defaultconfig.ini.php de l'application

Ensuite, dans vos controllers Jelix, vous chargez les classes du Zend framework avec Zend_Loader::loadClass(la_classe)

Exemple d'utilisation avec Zend_Pdf dans une action d'un controller Jelix :


function foooPdf() {
    $rep = $this->getResponse('binary');

    Zend_Loader::loadClass('Zend_Pdf');
    $pdf = new Zend_Pdf();
    $pdf->pages = ($page = $pdf->newPage('A4'));
    $font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA);
    $page->setFont($font, 32);
    $page->drawText('Zend Framework with Jelix !', 120, 500);        
       
    $rep->content = $pdf->render();
    $rep->outputFileName = 'fooo.pdf';
    $rep->mimeType = 'application/pdf';

    return $rep;    
}

, , ,