Zend Framework
De Bricosoft.
Zend framework ou zf est un framework modèle-vue-contrôleur (ou pas) en/pour PHP 5+.
Il est livré chez toutes les bonnes distribs :
$ sudo apt-get install libzend-framework-php zend-framework
Sommaire |
[modifier] Scaffolding / echaffaudage
Une bonne pratique est de toujours garder la même structure d'application, l'échaffaudage permet de créer, voire refactoriser une arborescence d'application.
L'outil CLI s'appioche zf.sh ou zf.bat pour zindozs :
$ zf.sh
An Error Has Occurred
An action and provider is required.
Zend Framework Command Line Console Tool v1.11.0dev
Usage:
zf [--global-opts] action-name [--action-opts] provider-name [--provider-opts] [provider parameters ...]
Note: You may use "?" in any place of the above usage string to ask for more specific help information.
Example: "zf ? version" will list all available actions for the version provider.
Providers and their actions:
Version
zf show version mode[=mini] name-included[=1]
Note: There are specialties, use zf show version.? to get specific help on them.
Config
zf create config
zf show config
zf enable config
Note: There are specialties, use zf enable config.? to get specific help on them.
zf disable config
Note: There are specialties, use zf disable config.? to get specific help on them.
Phpinfo
zf show phpinfo
Manifest
zf show manifest
Profile
zf show profile
Project
zf create project path name-of-profile file-of-profile
zf show project
Note: There are specialties, use zf show project.? to get specific help on them.
Application
zf change application.class-name-prefix class-name-prefix
Model
zf create model name module
View
zf create view controller-name action-name-or-simple-name
Controller
zf create controller name index-action-included[=1] module
Action
zf create action name controller-name[=Index] view-included[=1] module
Module
zf create module name
Form
zf create form name module
Layout
zf enable layout
zf disable layout
DbAdapter
zf configure db-adapter dsn section-name[=production]
DbTable
zf create db-table name actual-table-name module force-overwrite
Note: There are specialties, use zf create db-table.? to get specific help on them.
ProjectProvider
zf create project-provider name actions[modifier] Eclipse / Zend Studio
[modifier] Eclipse suggestion de code
Il faut avoir au préalable téléchargé la version de ZF dans un coin :
cd ~/libs/ svn checkout http://framework.zend.com/svn/framework/standard/trunk zend
Bouton droit sur le projet puis Properties :
PHP Include Path > Add Library > Config > New > User Library Name : ZF ...
Ensuite indiquez le chemin vers ... ~/libs/zend/ ou ton chemin banane !
Bon fais comme dans l'infanterie : tu te casses ailleurs !
[modifier] ZendX_Jquery
[modifier] Installation
Installer la bibliothèque ZendX (pas livrée avec le Zend Framework mais maintenue au même endroit)
$ pwd /home/gbp4dt5/libs/zend/library $ ls Zend
Récuperer ZendX
svn co http://framework.zend.com/svn/framework/extras/trunk/library/ZendX/
$ tree -d -L 2 .
.
|-- Zend
| |-- Acl
...
| `-- XmlRpc
`-- ZendX
|-- Application
|-- Console
|-- Db
`-- JQuery
C'est installé au même niveau et non dans Zend/. Pour votre information la librairie Dojo est dedans car officiellement supportée.
[modifier] Code d'exemple
Dans le bootstrap (application/Bootstrap.php) :
protected function _initViewHelpers() { $this->bootstrap ( 'view' ); $view = $this->getResource ( 'view' ); $view->addHelperPath ( "ZendX/JQuery/View/Helper", "ZendX_JQuery_View_Helper" ); $view->jQuery()->addStylesheet ( '/js/jquery/css/ui-lightness/jquery-ui-1.7.2.custom.css' ) ->setLocalPath ( '/js/jquery/js/jquery-1.3.2.min.js' ) ->setUiLocalPath ( '/js/jquery/js/jquery-ui-1.7.2.custom.min.js' ); $view->headLink()->appendStylesheet( '/css/bricosoft.css' ); $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer ( ); $viewRenderer->setView ( $view ); Zend_Controller_Action_HelperBroker::addHelper ( $viewRenderer ); }
Dans le layout (application/layouts/scripts/layout.phtml) :
<?= $this->doctype ()?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>www.bricosoft.com</title> <link rel="stylesheet" type="text/css" href="css/grids-min.css"> <?= $this->jQuery()->enable();?> <?= $this->headLink();?> </head>
enable() est ici explicite dans le cas où l'on n'utilisera pas d'objets ZendX_JQuery. On peut tout aussi bien mettre $this->jQuery() si l'on est sûr d'instancier un objet ZendX_JQuery.
Premier choix dans le contrôleur en appelant directement l'objet ZendX_JQuery_Form :
public function indexAction() { $form = new ZendX_JQuery_Form(); $date = new ZendX_JQuery_Form_Element_DatePicker( 'date', array('label' => 'La date :') ); $form->addElement($date); $this->view->form = $form; }
Soit en créant votre objet (c'est plus élégant) à placer dans library/My/Forms/Totoche.php
Remplacez alors dans le contrôleur :
$form = new ZendX_JQuery_Form();
par :
$form = new My_Forms_Totoche();
Votre objet :
class My_Forms_Totoche extends ZendX_JQuery_Form { public function init() { $this->setName('Totoche'); $date = new ZendX_JQuery_Form_Element_DatePicker( 'date'); $this->addElement($date); ...
Après ce choix cornélien, il reste la Vue :
<?php echo $this->form; ?>
Et voilà, un clic sur l'élement affiche un calendrier sexy.




