Table des matières
- Introduction au développement d'extensions eZ Publish
- What are eZ Publish extensions ? -- Qu'est-ce que les extensions eZ Publish ?
- Creating a new extension -- Créer une nouvelle extension
- Configuring and enabling the extension -- Configurer et activer l'extension
- Activating the extension -- Activer l'extension
- Template system -- Le système de templates
- Creating a view -- Créer une vue
- Accessing the database -- Accéder à la base de données
- Template fetch function -- Fonction de recherche pour template
- Template operators -- Les opérateurs de templates
- INI file -- Le fichier INI
- Conclusion
Creating a view -- Créer une vue
Date de publication: le samedi 20 août 2011 à 09h24
Dernière modification: par Pascal BOYER le samedi 3 septembre 2011 à 15h33
Now we extend our example by creating a new view. We want to save the array with the example data in the database, so we create a new database table (using, for example, phpMyAdmin) with the name "jacextension_data" in our ez39_plain database, with the columns id | user_id | created | value ( see listing 11).
Nous allons maintenant enrichir notre exemple d'une nouvelle vue. Nous souhaitons sauvegarder, dans la base de données, le tableau contenant les exemples de données. Nous créons pour cela (en utilisant, par exemple,
phpMyAdmin
) une nouvelle table nommée jacextension_data dans notre base de données ezp_plain. Cette table contiendra les colonnes id | user_id | created | value (voir Script 11).
CREATE TABLE jacextension_data ( id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , user_id INT( 11 ) NOT NULL , created INT( 11 ) NOT NULL , value VARCHAR( 50 ) NOT NULL ) ENGINE = MYISAM ;
Listing 11. Run the SQL command on the ezp_plain database to create a new jacextension_data table.
Script 11 : Exécuter la commande SQL dans la base de données ezp_plain pour créer la nouvelle table jacextension_data.
Next we copy list.php to create.php, list.tpl to create.tpl and we extend module.php with a new view and user role function ("create"), which links to the PHP file create.php. Then we change the template call in create.php to design:modul1/create.tpl and adjust the rights for the view modul1/create. Clear the cache.
Nous faisons ensuite une copie de list.php en create.php, de list.tpl en create.tpl et nous enrichissons le fichier module.php d'une nouvelle vue et d'une nouvelle fonction utilisateur ("create") assurant la liaison avec le fichier create.php. Nous modifions ensuite le template appelé depuis create.php en design:module/create.tpl et ajustons les droits pour la vue modul1/create. Vider les caches.
Now the URL http://localhost/ez/index.php/plain_site/modul1/create will work. It is the same view as modul1/list but without view parameters.
L'URI http://localhost/ez/index.php/plain_site/modul1/create devrait maintenant fonctionner. Il s'agit de la même vue que celle du module modul1/list mais sans les paramètres de vue.
To store data in our MySQL database, we will build an HTML form that sends the data to our new view (with POST and GET variables). We create a new form in the template create.tpl with a text line name. In our example we want to send the data with GET. We also insert a new template variable {$status_message} to show the user a message (see listing 12).
Afin de stocker les données dans notre base de données MySQL, nous devons construire un formulaire HTML qui envoie les données vers notre nouvelle vue (par le biais de variables POST et GET). Nous créons ce nouveau formulaire dans le template create.tpl avec un nom (????). Dans notre exemple, nous souhaitons envoyer les données par la méthode GET. Nous insérons également une nouvelle variable de template {$status_message} pour afficher un message à destination des utilisateurs (voir Script 12).
{* create.tpl – template for Modulview .../modul1/create Html form to save the new data *} <form action={'modul1/create'|ezurl} method="get"> Name :<br /> <input name="name" type="text" size="50" maxlength="50"><br /> <input type="submit" name="DataCreation" value="Create new data"> <input type="reset" value="Cancel"> </form> <hr> Status: {$status_message}
Listing 12. Template jacextension/design/standard/templates/modul1/create.tpl with a form to save the new data.
Script 12 : Le template jacextension/design/standard/templates/modul1/create.tpl contenant le formulaire pour sauvegarder les nouvelles données.
GET / POST
At this point we change list.php to show the GET name variable, which the HTML form transmits to the script. After that we show it in the status field in the template. To show the variable GET / POST we use the eZ Publish framework with the eZHTTPTool class.
À ce stade, nous modifions list.php pour afficher le nom de la variable GET que le formulaire HTML transmet au script et nous affichons ce nom dans le champ de statut du template. Pour afficher la variable GET/POST nous utilisons le framework eZ Publish avec la classe eZHTTPTool.
First we take a reference of the object of eZHTTPTool with $http = eZHTTPTool::instance(); With $http->hasVariable('name'); we can discover if the variable $_GET['name'] or $_POST['name'] exists and with $http->variable('name'); we can display it. If only GET or POST variables should be shown, we can use $http->hasGetVariable('name'); or $http->hasPostVariable('name');
Nous prenons tout d'abord une référence de l'objet de eZHTTPTool par le biais de la syntaxe $http = eZHTTPTool::instance(); Avec $http->hasVariable('name'); nous pouvons savoir si la variable $_GET['name'] ou $_POST['name'] existe et avec $http->variable('name'); nous pouvons l'afficher. Si seules les variables GET ou POST doivent être affichées, alors nous pouvons utiliser $http->hasGetVariable('name'); ou $http->hasPostVariable('name');
Information about other functions (for example access to sessions) are described in the API documentation for eZ Publish. For the eZHTTPTool class, see http://pubsvn.ez.no/doxygen/4.4/html/classeZHTTPTool.html.
De plus amples informations sur les autres fonctions (d'accès aux sessions par exemple) sont disponibles dans la documentation de l'API d'eZ Publish. Concernant la classe eZHTTPTool, reportez-vous à la page
http://pubsvn.ez.no/doxygen/4.4/html/classeZHTTPTool.html
.
If we want to write our own log file we use eZLog::write(). This is often useful because the default log files contain a lot of information and are not easy to read (see Listing 13).
Si nous voulons écrire notre propre fichier de log, nous pouvons utiliser eZLog::write(). Ceci est souvent très utile car les fichiers de log par défaut contiennent un grand nombre d'information et ne sont pas toujours faciles à lire (voir Script 13).
<?php // modul1/create.php – Function file of View create $Module = $Params['Module']; // take copy of global object $http = eZHTTPTool::instance (); $value = ''; // If the variable 'name' is sent by GET or POST, show variable if( $http->hasVariable('name') ) $value = $http->variable ('name'); if( $value != '' ) $statusMessage = 'Name: '. $value; else $statusMessage = 'Please insert data'; // initialize Templateobject $tpl = eZTemplate::factory(); // From eZPublish 4.3. For previous versions, use templateInit() function instead $tpl->setVariable( 'status_message', $statusMessage ); // Write variable $statusMessage in the file eZ Debug Output / Log // here the 4 different types: Notice, Debug, Warning, Error eZDebug::writeNotice( $statusMessage, 'jacextension:modul1/list.php' ); eZDebug::writeDebug( $statusMessage, 'jacextension:modul1/list.php' ); eZDebug::writeWarning( $statusMessage, 'jacextension:modul1/list.php' ); eZDebug::writeError( $statusMessage, 'jacextension:modul1/list.php' ); // $statusMessage write own Log file to ezroot/var/log/jacextension_modul1.log eZLog::write ( $statusMessage, 'jacextension_modul1.log' ); $Result = array(); // search/replace template and save result for $module_result.content $Result['content'] = $tpl->fetch( 'design:modul1/create.tpl' ); // generate route Modul1/create $Result['path'] = array( array( 'url' => 'modul1/list', 'text' => 'Modul1'), array( 'url' => false, 'text' => 'create' ) ); ?>
Listing 13. jacextension/module/modul1/create.php with examples to show variables GET/POST and generate Debug messages and Log files
Script 13 : Le fichier jacextension/module/modul1/create.php contenant des exemples de code d'affichages des variables GET/POST, de génération de message pour le mode Debug et de fichiers de log.
Commentaires














