Raccourcis : Contenu - rubriques - sous rubriques
EN FR

Une application Jelix possède quelques fichiers de configuration :

  • un fichier project.xml, décrivant des informations générales sur l'application
  • un fichier module.xml dans chaque module
  • un fichier defaultconfig.ini.php pour la configuration globale, et un fichier config.ini.php pour chaque point d'entrée.
  • un fichier profiles.ini.php pour les profils de connexion.

Ils sont tous générés automatiquement lorsque vous créez une application ou un module. Cependant, vous devez bien souvent les modifier pour apporter des renseignements supplémentaires ou changer des paramètres.

Ce chapitre présente ces fichiers. Voyez le chapitre sur les details de la configuration pour en savoir plus sur le contenu.

Le fichier project.xml

Le fichier project.xml contient des informations sur l'application, dont certaines sont importantes puisqu'elles servent à l'installateur, entre autres. Voici un exemple :


<?xml version="1.0" encoding="iso-8859-1"?>
<project xmlns="http://jelix.org/ns/project/1.0">
    <info id="testapp@jelix.org" name="testapp" createdate="2005-01-01">
        <version>1.3</version>
        <label lang="en_US">Testapp</label>
        <description lang="en_US">Application to test Jelix</description>
        <licence URL="http://www.gnu.org/licenses/gpl.html">GPL</licence>
        <copyright>2005-2011 Laurent Jouanneau and other contributors</copyright>
        <creator name="Laurent Jouanneau" email="laurent@jelix.org" active="true" />
        <homepageURL>http://jelix.org</homepageURL>
    </info>
    <dependencies>
       <jelix minversion="1.3" maxversion="1.3.*" />
    </dependencies>
    <directories>
        <config>var/config</config>
        <log>var/log</log>
        <var>var</var>
        <www>www</www>
        <temp>../temp/testapp</temp>
    </directories>
    <entrypoints>
        <entry file="index.php" config="index/config.ini.php" />
        <entry file="soap.php" config="soap/config.ini.php" type="soap"/>
    </entrypoints>
</project>

Les fichiers module.xml

Un fichier module.xml doit se trouver dans chacun des répertoires de module. Il contient des informations générales, mais aussi les dépendances avec d'autres modules. Voici un exemple:


<module xmlns="http://jelix.org/ns/module/1.0">
    <info id="jelix_tests@testapp.jelix.org" name="jelix_tests">
        <version>1.0</version>
        <label>Jelix tests</label>
        <description>unit tests for jelix</description>
    </info>
    <dependencies>
        <jelix minversion="1.3" maxversion="1.3.*" />
        <module name="testurls" minversion="1.0.2" maxversion="1.1b1" />
        <module name="jauthdb" />
        <module name="jacl2db" />
        <module name="jacldb" />
    </dependencies>
</module>

Les fichiers de configuration ini

La configuration du framework est stockée dans un fichier de type "ini". Il s'agit d'un fichier contenant des sections, débutant par un nom entre crochets. Chacune de ces sections contenant une série de paramètres "nom=valeur". Il y a une section "générale", qui n'a pas de nom, et dont les paramètres sont en début du fichier.

Les fichiers de configuration sont situés dans var/config/.

Chaque point d'entrée peut avoir son fichier de configuration spécifique. Mais la plupart du temps ils ont beaucoup de valeurs de paramètres identiques entre eux. Pour éviter de répéter ces paramètres identiques dans chaque fichier, il y a un fichier de configuration commun, qui a pour nom defaultconfig.ini.php. Il est automatiquement lu, en plus du fichier spécifique au point d'entrée, et il n'est pas besoin de l'indiquer dans les points d'entrée.

Un fichier de configuration spécifique ne contiendra donc que les valeurs spécifiques pour le point d'entrée, et peut bien sûr redéfinir des paramètres définis dans le fichier commun.

Exemple d'un fichier defaultconfig.ini.php (extrait) :


locale = "fr_FR"
charset = "ISO-8859-1"
timeZone = "Europe/Paris"
theme = default

pluginsPath = lib:jelix-plugins/,app:plugins/
modulesPath = lib:jelix-modules/,app:modules/

[modules]
mymodule = 2
jauth = 2


[coordplugins]
;nom = nom_fichier_ini

[responses]
...

Pour les requêtes classiques, passant par index.php, on pourrait avoir le fichier var/config/index/config.ini.php. On le met ici dans un sous-répertoire index pour une meilleure organisation (il peut en effet y avoir des fichiers de configuration de plugins propres à chaque point d'entrée, ça peut donc vite devenir peu lisible dans var/config/).

Dans ce fichier, on ne va redéfinir que certaines choses :


startModule = "testapp"
startAction = "main:index"

[coordplugins]
autolocale = index/autolocale.ini.php

[responses]
html=myHtmlResponse

Pour le fichier de configuration de xmlrpc.php, on pourrait avoir par exemple :



  startModule = "testapp"
  startAction = "xmlrpc:index"

etc.

Il faut savoir qu'il existe un deuxième fichier defaultconfig.ini.php, situé dans le répertoire lib/jelix/core/. Il contient une liste exhaustive de tout les paramètres possibles. Jelix le lit en premier, puis le defaultconfig.ini.php de votre application, et ensuite celui du point d'entrée. Les valeurs d'un fichier écrasant celles du fichier lu précédemment.

Le fichier profiles.ini.php

Ce fichier contient tous les paramètres de connexions de certains composants de Jelix : base de données SQL, NOSQL, services web, cache etc. Dans Jelix 1.2, ces données étaient dans plusieurs fichiers (dbprofils.ini.php, cache.ini.php etc). Depuis la version 1.3, tout est rassemblé dans cet unique fichier.

C'est un fichier au format ini. Chaque section correspond à un profil, un profil étant les paramètres d'une connexion. Les noms des sections sont composés de deux noms séparés par ":":

  • Le premier nom est le nom d'un type de connexion (correspondant au composant qui l'utilise)
  • Le deuxième est le nom du profil, choisi par vous même. Deux noms ont une signification spéciale. Le nom de profil "default" qui est le profil par défaut utilisé quand on n'indique pas de profil au composant. Et le nom "common".

Le contenu de la section contient les paramètres de connexions.

Exemple, d'un profil de connexion pour jDb, le composant d’accès aux bases de données :


[jdb:default]
driver=mysqli
login=
password=

Alias de profil

Vous pouvez définir des alias de profils. C'est à dire donner plusieurs noms à un profil. C'est utile par exemple si un module utilise un nom de profil particulier. Il est alors possible d'indiquer que ce nom de profil sera rattaché à un profil existant.

Les alias sont définis dans une section dont le nom contient uniquement le nom du type de connexion.

Un exemple pour jDb, en définissant un alias 'jacl2_profile' :


[jdb]
jacl2_profile = default

[jdb:default]
driver=mysqli
login=
password=

Un alias ne doit pas indiquer le nom d'un autre alias.

Paramètres communs

Il est possible de définir des paramètres qui sont communs à tout les profils d'un même type. Cela évite de les répéter dans chaque profil. Pour ce faire, il faut les déclarer dans un profil spécial, __common__.

Par exemple, si toutes les connexions aux bases de données SQL (jDb) doivent être persistantes et se font toutes sur le même serveur :


[jdb:__common__]
host=my.server.example.com
persistant=on

Vous pouvez bien sûr redéfinir ces paramètres dans les profils, pour les exceptions.

Profil virtuel

Vous pouvez utiliser un profil qui n'existe pas dans le fichier profiles.ini.php. Cela permet d'utiliser une connexion dont on ne connaît pas les caractéristiques à l'avance.

Pour cela, avant d'appeler les différentes méthodes du composant concerné, il vous faut déclarer ce profil "virtuel". Vous appellerez alors la méthode createVirtualProfile de l'objet jProfiles qui gère les profils. À cette méthode, vous donnerez le type de profil, un nom de profil, ainsi qu'un tableau de paramètres de connexion.

Exemple :


   $params = array(
       'driver'=>'mysqli',
       'host'=>'localhost',
       'database'=>'jelix',
       'user'=>'toto',
       'password'=>'blabla',
       'persistent'=>false,
       'force_encoding'=>true
   );
   jProfiles::createVirtualProfile('jdb', 'mon_profil', $params);

   $cnx = jDb::getConnection('mon_profil');

Les paramètres communs s'appliquent bien sûr sur les profils virtuels.