Traductions de cette page?:

Intégration de Propel dans Agavi

Les développeurs d'Agavi ont, par chance, eut la bonne idée de nous faciliter le travail. Et seules quelques petites modifications vont être nécessaires pour les faire fonctionner ensemble.

Intégration

Les fichiers de configuration d'Agavi se trouvent dans le répertoire app/config. Vous y trouverez des fichiers XML, traitant chacun d'une partie d'Agavi. Pour rester logique, nous allons recopier le fichier de configuration de notre projet Propel dans ce répertoire :

fabrice@kimsufi-rld:~/dev/ForumPHP$ cd agavi/app/config/
fabrice@kimsufi-rld:~/dev/ForumPHP/agavi/app/config$ cp ../../../propel/build/conf/forum-conf.php .
fabrice@kimsufi-rld:~/dev/ForumPHP/agavi/app/config$ cp ../../../propel/build/conf/forum-classmap.php .

Il faut maintenant copier toutes les classes générées par Propel dans un répertoire d'Agavi. Le répertoire lib/model correspond à notre besoin.

fabrice@kimsufi-rld:~/dev/ForumPHP/agavi/app/config$ cd ../lib/model/
fabrice@kimsufi-rld:~/dev/ForumPHP/agavi/app/lib/model$ cp -a ../../../../propel/build/classes/forum .

Voilà, nous avons maintenant tous les fichiers générés par Propel nécessaires à Agavi copiés dans les bons répertoires. Dans le cadre d'un développement, il aurait été probablement plus judicieux de faire des liens symboliques plutôt que des copies, car tous ces fichiers sont susceptibles d'évoluer.

Fichier de configuration

Puisque nous voulons configurer la base de donnée, nous allons maintenant modifier le fichier databases.xml qui contient des exemples de code et l'adapter à notre application. Pour qu'Agavi sache comment se connecter à notre base, il faut lui donner l'emplacement du fichier de configuration que nous avons généré et que nous avons copié dans le répertoire config.

 1: <?xml version="1.0" encoding="UTF-8"?>
 2: <configurations xmlns="http://agavi.org/agavi/1.0/config">
 3:    <configuration>
 4:        <databases default="propel">
 5:        <database name="propel" class="AgaviPropelDatabase">
 6:             <parameters>
 7:                <parameter name="config">%core.app_dir%/config/forum-conf.php</parameter>
 8:             </parameters>
 9:        </database>
10:     </databases>
11:   </configuration>
12: </configurations>

Il faut également ajouter l'emplacement où se trouvent nos classes propel au chemin de recherche d'agavi, chose que l'on peut faire dans le fichier app/config.php en modifiant la dernière ligne comme ceci :

 1: <?php
 2:
 3: // +---------------------------------------------------------------------------+
 4: // | Should we run the system in debug mode? When this is on, there may be     |
 5: // | various side-effects. But for the time being it only deletes the cache    |
 6: // | upon start-up.                                                            |
 7: // |                                                                           |
 8: // | This should stay on while you're developing your application, because     |
 9: // | many errors can stem from the fact that you're using an old cache file.   |
10: // |                                                                           |
11: // | This constant will be auto-set by Agavi if you do not supply it.          |
12: // | The default value is: <false>                                             |
13: // +---------------------------------------------------------------------------+
14: // AgaviConfig::set('core.debug', true);
15:
16: // +---------------------------------------------------------------------------+
17: // | An absolute filesystem path to the agavi package. This directory          |
18: // | contains all the Agavi packages.                                          |
19: // |                                                                           |
20: // | This constant will be auto-set by Agavi if you do not supply it.          |
21: // | The default value is the name of the directory "agavi.php" resides in.    |
22: // +---------------------------------------------------------------------------+
23: // AgaviConfig::set('core.agavi_dir', '/usr/share/php/agavi');
24:
25: // +---------------------------------------------------------------------------+
26: // | An absolute filesystem path to your web application directory. This       |
27: // | directory is the root of your web application, which includes the core    |
28: // | configuration files and related web application data.                     |
29: // | You shouldn't have to change this usually since it's auto-determined.     |
30: // | Agavi can't determine this automatically, so you always have to supply it.|
31: // +---------------------------------------------------------------------------+
32: AgaviConfig::set('core.app_dir', dirname(__FILE__));
33:
34: // +---------------------------------------------------------------------------+
35: // | An absolute filesystem path to the directory where cache files will be    |
36: // | stored.                                                                   |
37: // |                                                                           |
38: // | NOTE: If you're going to use a public temp directory, make sure this is a |
39: // |       sub-directory of the temp directory. The cache system will attempt  |
40: // |       to clean up *ALL* data in this directory.                           |
41: // |                                                                           |
42: // | This constant will be auto-set by Agavi if you do not supply it.          |
43: // | The default value is: "<core.app_dir>/cache"                              |
44: // +---------------------------------------------------------------------------+
45: // AgaviConfig::set('core.cache_dir', AgaviConfig::get('core.app_dir') . '/cache');
46:
47: // +---------------------------------------------------------------------------+
48: // | You may also modify the following other directives in this file:          |
49: // |  - core.config_dir   (defaults to "<core.app_dir>/config")                |
50: // |  - core.lib_dir      (defaults to "<core.app_dir>/lib")                   |
51: // |  - core.model_dir    (defaults to "<core.app_dir>/model")                 |
52: // |  - core.module_dir   (defaults to "<core.app_dir>/modules")               |
53: // |  - core.template_dir (defaults to "<core.app_dir>/templates")             |
54: // +---------------------------------------------------------------------------+
55:
56: set_include_path(get_include_path() . PATH_SEPARATOR . AgaviConfig::get('core.app_dir').'/lib/model');
57: ?>

Il faut maintenant spécifier dans le fichier settings.xml que notre application utilise une base de données. Pour ce faire, il suffit de modifier la ligne [35] en passant le paramètre à true.

 1: <?xml version="1.0" encoding="UTF-8"?>
 2: <configurations xmlns="http://agavi.org/agavi/1.0/config">
 3:    <configuration>
 4:        <system_actions>
 5:            <system_action name="default">
 6:                <module>Default</module>
 7:                 <action>Index</action>
 8:            </system_action>
 9:            <system_action name="error_404">
10:                <module>Default</module>
11:                <action>Error404</action>
12:            </system_action>
13:            <system_action name="login">
14:                <module>Default</module>
15:                <action>Login</action>
16:            </system_action>
17:            <system_action name="module_disabled">
18:                <module>Default</module>
19:                <action>ModuleDisabled</action>
20:            </system_action>
21:            <system_action name="secure">
22:                <module>Default</module>
23:                <action>Secure</action>
24:            </system_action>
25:            <system_action name="unavailable">
26:                <module>Default</module>
27:                <action>Unavailable</action>
28:            </system_action>
29:        </system_actions>
30:         <settings>
31:             <setting name="app_name">My Project</setting>
32:             <setting name="available">true</setting>
33:             <setting name="debug">false</setting>
34:             <setting name="modpub">/modpub</setting>
35:             <setting name="use_database">true</setting>
36:             <setting name="use_logging">false</setting>
37:             <setting name="use_routing">true</setting>
38:             <setting name="use_security">true</setting>
39:             <setting name="use_translation">false</setting>
40:         </settings>
41:         <exception_templates>
42:             <exception_template>%core.agavi_dir%/exception/templates/shiny.php</exception_template>
43:             <exception_template context="console">%core.agavi_dir%/exception/templates/plaintext.php</exception_template>
44:         </exception_templates>
45:     </configuration>
46:     <configuration environment="development">
47:         <settings>
48:             <setting name="debug">true</setting>
49:         </settings>
50:     </configuration>
51: </configurations>

Si vous affichez la page de l'application, vous constaterez que maintenant la page affichée est celle-ci :

Les sources sont téléchargeables : ici

Dans la prochaine section, nous allons modifier ces pages afin d'avoir quelque chose de plus en rapport avec un forum.

~~DISCUSSION~~

 
/opt/dokuwiki/data/pages/doc/integagavi.txt · Dernière modification: 2008/11/21 15:59 (modification externe)
 
RSS - 2007 © CoreDmp