Zend Framework
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
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 : <source lang="properties"> $ 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
</source>
Eclipse / Zend Studio
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 !
ZendX_Jquery
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.
Code d'exemple
Dans le bootstrap (application/Bootstrap.php) : <source lang="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 ); } </source>
Dans le layout (application/layouts/scripts/layout.phtml) : <source lang="html4strict"> <?= $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> </source> 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 : <source lang="php">
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;
}
</source> 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 : <source lang="php"> 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); ... </source>
Après ce choix cornélien, il reste la Vue : <source lang="php"> <?php echo $this->form; ?> </source> Et voilà, un clic sur l'élement affiche un calendrier sexy.