29-11-2011 : Remettre dans le débat politique les principes du Conseil National de la Résistance
17-02-2012 : Pétition pour une protection de l’apiculture et des consommateurs face au lobby des OGM
Logo de mon site
Logo de mon site
Faire un don

Luxpopuli / eZ Publish / Dossiers techniques / eZ Publish : An Introduction to Developing eZ Publish Extensions / Template fetch function -- Fonction de recherche pour template





Right menu

Logo du site ez.no  Logo XHTML 1.O du W3C  Logo XHTML 1.O du W3C  Site francophone officiel de Firefox
zero papier grâce aux catalogues et promos en ligne de bonial

eZ Publish : An Introduction to Developing eZ Publish Extensions

Table des matières

  1. Introduction au développement d'extensions eZ Publish
  2. What are eZ Publish extensions ? -- Qu'est-ce que les extensions eZ Publish ?
  3. Creating a new extension -- Créer une nouvelle extension
  4. Configuring and enabling the extension -- Configurer et activer l'extension
  5. Activating the extension -- Activer l'extension
  6. Template system -- Le système de templates
  7. Creating a view -- Créer une vue
  8. Accessing the database -- Accéder à la base de données
  9. Template fetch function -- Fonction de recherche pour template
  10. Template operators -- Les opérateurs de templates
  11. INI file -- Le fichier INI
  12. Conclusion

Template fetch function -- Fonction de recherche pour template

Date de publication: le samedi 20 août 2011 à 09h24
Dernière modification: par Pascal BOYER le samedi 3 septembre 2011 à 21h12

Note : For an extensive tutorial on how to make custom fetch functions, please read Understanding and developing fetch functions.
Note: Pour consulter un tutoriel plus complet et savoir comment créer des fonctions de recherche (fetch) personnalisées, veuillez vous reporter au document Understanding and developing fetch functions .

We now know how to transmit parameters and GET / POST variables to a new view and show them. But if we want to show data (for example our database table) in an eZ Publish template, we cannot handle it just by opening the view.
Nous savons à présent comment transmettre des paramètres et des variables GET/POST à une nouvelle vue et comment les afficher. Mais si nous souhaitons afficher des données (celles de notre table de la base de données par exemple) dans un template eZ Publish, alors nous ne pouvons gérer cela juste en ouvrant la vue.

To do this we use the fetch functions from the "kernel" eZ module, for example {fetch('content', 'node', hash( 'node_id', 2 )}. We want to define two fetch functions, list and count, which are opened by the following template syntax:
Pour cela, nous utilisons donc les fonctions de recherche du module kernel, comme par exemple {fetch('content', 'node', hash( 'node_id', 2 )}. Nous voulons définir deux fonctions de recherche, list et count, qui seront ouvertes par les syntaxes de template suivantes:

{fetch( 'modul1', 'list', hash( 'as_object' , true() ) )}
{fetch( 'modul1', 'count', hash() )}

The function list shows the data entries as arrays or objects (based on the setting of the parameter ‘as_object'). The count function doesn't have any parameters and uses an SQL command to determine the amount of data in our database table jacextension_data.
La fonction list affiche les données sous forme de tableaux ou d'objets (en se basant sur le paramètre 'as_object'). La fonction count ne contient aucun paramètre et utilise une commande SQL pour déterminer la quantité de données contenues dans notre table jacextension_data.

The definition of the fetch functions is done in the file jacextension/modules/modul1/function_definition.php. This also defines which parameters are transmitted to which PHP function within the specified PHP class.
La définition des fonctions de recherche (fetch) est placée dans le fichier jacextension/modules/modul1/function_definition.php et définit également, pour chaque classe PHP spécifiée, quels paramètres transmettre à quelle fonction PHP.

<?php
$FunctionList = array();
 
// {fetch('modul1','list', hash('as_object', true()))|attribute(show)} 
$FunctionList['list'] = array( 'name' => 'list', 
                               'operation_types' => array( 'read' ), 
                               'call_method' => array( 'class' => 'eZModul1FunctionCollection', 
                                                       'method' => 'fetchJacExtensionDataList' ), 
                               'parameter_type' => 'standard', 
                               'parameters' => array( array( 'name' => 'as_object', 
                                                             'type' => 'integer', 
                                                             'required' => true ) ) 
                        );
 
//{fetch('modul1','count', hash())} 
$FunctionList['count'] = array( 'name' => 'count', 
                                'operation_types' => array( 'read' ), 
                                'call_method' => array( 'class' => 'eZModul1FunctionCollection', 
                                                        'method' => 'fetchJacExtensionDataListCount' ), 
                                'parameter_type' => 'standard', 
                                'parameters' => array() 
                        ); 
 
?>
 

Listing 16. Definition of the fetch functions of modul1 - extension/jacextension/modules/modul1/function_defintion.php
Script 16 : Définition des fonctions de recherche de modul1 dans le fichier extension/jacextension/modules/modul1/function_defintion.php

The file jacextension/modules/modul1/ezmodul1functioncollection.php has a help class that contains all the fetch functions.
Le fichier jacextension/modules/modul1/ezmodul1functioncollection.php dispose d'une classe d'aide contenant toutes les fonctions de recherche.

<?php
 
class eZModul1FunctionCollection
{ 
    public function __construct() 
    {
        // ...
    }
 
    /*
     * Is opened by('modul1', 'list', hash('as_object', $bool ) ) fetch
     * @param bool $asObject
     */ 
    public static function fetchJacExtensionDataList( $asObject ) 
    { 
        return array( 'result' => JACExtensionData::fetchList( $asObject ) ); 
    }
 
    /*
     * Is opened by('modul1', 'count', hash() ) fetch
     */
    public static function fetchJacExtensionDataListCount()
    { 
        return array( 'result' => JACExtensionData::getListCount() ); 
    } 
} 
?>
 

Listing 17. Help class with PHP functions that are used in the Template Fetch definition in function_defintion.php – extension/jacextension/modules/modul1/ezmodul1functioncollection.php
Script 17 : La classe d'aide et les fonctions PHP utilisées dans la définition des fonctions de template Fetch du fichier function_defintion.php extension/jacextension/modules/modul1/ezmodul1functioncollection.php

Hint: In each module, the file functioncollection.php lists the possible parameters for the hash() part of a fetch function. Investigate the file kernel/content/ezcontentfunctioncollection.php to determine which parameters are available for the fetch function {fetch('content', 'tree', hash( ... ) )} of the kernel content module of eZ Publish. This helps if the eZ documentation is incomplete.
Astuce: Pour chaque module, le fichier functioncollection.php liste les paramètres possibles pour la partie hash() de la fonction fetch. Consultez le fichier kernel/content/ezcontentfunctioncollection.php afin de déterminer les paramètres disponibles pour la fonction de recherche {fetch('content', 'tree', hash( ... ) )} du module content d'eZ Publish. Ceci vous aidera lorsque la documentation d'eZ s'avèrera incomplète.

And of course, as for every new PHP class, do not forget to regenerate autoloads.
Et bien entendu, comme pour chaque classe PHP, n'oubliez pas de régénérer les autochargements.

Commentaires