Project

General

Profile

Fr Profils » History » Version 6

« Previous - Version 6/8 (diff) - Next » - Current version
Janitrix, 08/20/2009 08:46 PM


Les profils

1. Présentation

Sans profil, Zenerator est plutôt inutile. Un profil indique à Zenerator quoi faire avec la structure de la base de données. Les profils doivent être placés dans le dossier ${ZENERATOR_HOME}/public/zenerator/profiles, avec ${ZENERATOR_HOME} le dossier dans lequel est déployée l'application. Chaque profil doit être placé dans un sous-dossier du dossier profiles, et un fichier setup.xml doit être présent à la racine de ce sous-dossier. Ce sont les uniques conditions pour avoir un profil fonctionnel.

Pour la suite, imaginons un profil nommé "CRUD". Tout d'abord, il faut créer un dossier 'crud' dans ${ZENERATOR_HOME}/public/zenerator/profiles, et y placer un fichier setup.xml. La section suivante explique en quoi consiste ce fichier, et ce qu'il doit contenir.

2. Le fichier setup.xml

Le fichier setup.xml est le coeur du profile. Il indique quels sont les dossiers et fichiers à créer, ainsi que les templates à utiliser. Voici un tableau descriptif des balises et attributs qui peuvent être présents dans un fichier setup.xml :

a. Liste des balises

Nom Enfant de Description Requis
zenerator - Balise racine Oui
profile zenerator Profil Oui
id profil ID du profil, doit être identique au nom du dossier du profil Oui
name profil Nom du profil Oui
options profil Options du profil Oui
option options Une option Non
directories profil Liste des dossiers à créer Oui
directory directories Un dossier à créer Non
files profil Liste des fichiers à créer Oui
file files Un fichier à créer Non
templates profil Liste des templates disponibles Oui
template templates Un template Non

b. Liste des attributs

Nom Balise Description Valeurs possibles Requis
name option Nom de l'option, affiché dans le formulaire Chaine de caractères Oui
id option ID de l'option, utilisé dans le formulaire Chaine de caractères Oui
type option ID de l'option, utilisé dans le formulaire textarea, text, password, checkbox Oui
default option Valeur par défaut du champ Non
description option Description du champ, affiché dans une bulle d'aide Non
options profil Options du profil Oui
option options Une option Non
directories profil Liste des dossiers à créer Oui
directory directories Un dossier à créer Non
files profil Liste des fichiers à créer Oui
file files Un fichier à créer Non
templates profil Liste des templates disponibles Oui
template templates Un template Non

3. Un exemple : le profil CRUD

Voici un exemple de fichier setup.xml plutôt complet :

<?xml version="1.0" encoding='UTF-8'?>
<zenerator>
    <profile>
        <name>CRUD</name>
        <id>crud</id>
        <description>A simple Create Read Update Delete app</description>
        <options>
            <option name="Company Name" id="company_name" default="My Company" description="Will be used in footer" />
            <option name="Copyright interval" id="copyright_interval" default="2008 - 2009" description="Will be used in footer" />
            <option name="License" id="license_text" default="Enter the license text here..." type="textarea" description="Will be used in LICENSE.TXT" />
        </options>
        <directories>
            <directory>application</directory>
            <directory>application/configuration</directory>
            <directory>application/controllers</directory>
            <directory>application/forms</directory>
            <directory>application/layouts</directory>
            <directory>application/layouts/scripts</directory>
            <directory>application/views</directory>
            <directory>application/views/scripts</directory>
            <directory>application/views/scripts/index</directory>
            <directory>library</directory>
            <directory>library/{app.name}</directory>
            <directory>library/{app.name}/Resource</directory>
            <directory>public</directory>
            <directory>public/images</directory>
            <directory>public/styles</directory>
        </directories>
        <files>
            <file src="files/license.txt" parse="true" target="public/LICENSE.txt" />
            <file src="files/IndexController.php.tpl" parse="true" target="application/controllers/IndexController.php" />
            <file src="files/index.phtml.tpl" parse="true" target="application/views/scripts/index/index.phtml" />
            <file src="files/index.php" parse="false" target="index.php" />
            <file src="files/.htaccess" parse="false" target=".htaccess" />
            <file src="files/default.phtml.tpl" parse="true" target="application/layouts/scripts/default.phtml" />
            <file src="files/application.ini.tpl" parse="true" target="application/configuration/application.ini" />
            <file src="files/Bootstrap.php" parse="false" target="application/Bootstrap.php" />
            <file src="files/styles/ui.css" parse="false" target="public/styles/ui.css" />
            <file src="files/styles/button.css" parse="false" target="public/styles/button.css" />
            <file src="files/styles/form.css" parse="false" target="public/styles/form.css" />
            <file src="files/images/*" parse="false" target="public/images" />
            <file src="files/View.Resource.php.tpl" parse="true" target="library/{app.name}/Resource/View.php" />
        </files>
        <templates>
            <template type="table" name="Controller" id="controller" src="templates/controller.tpl" use-columns="false" target="application/controllers" name-macro="controller-filename-macro.ini" description="Generate a controller with simple CRUD actions." />
            <template type="table" name="Index View" id="index.view" src="templates/view.index.tpl" use-columns="false" target="application/views/scripts/{table.id}" name-macro="view-index-filename-macro.ini" description="Generate an index view with links to actions." />
        </templates>
    </profile>
</zenerator>