Vous avez déjà un site Web.
Vous voulez garder cet acquis.
Vous avez envie de développer de nouvelles applications avec CodeIgniter.
Don’t panic!
Voici la solution.
Étape 1 – Checklist
Vous devez répondre aux questions suivantes :
(1) quand appeller un controller CodeIgniter, quand appeller une page régulière ?
(2) où placer CodeIgniter sur mon serveur ?
Étape 2 – Upload de CodeIgniter
(1) Uploadez le dossier system à la racine de votre serveur, renommez le CodeIgniter si vous avez déjà un dossier système.
(2) Uploadez index.php également à la racine du serveur en l’appellant codeigniter.php
Le cas échéant, remplacer $system_folder = “system”; par le nom du dossier réglé en (1).
Étape 3 – Appel de CodeIgniter
CAS 1 – Vos pages sont include depuis index.php
Rassurez-moi, vous gérez bien le cas des erreurs 404 ?
Pour Espace Win, lorsque Pluton rencontre une url /welcome il vérifie si le dossier welcome existe.
Si vous avez peu de controller, au lieu de perdre quelques millisecodnes dans le code ci-dessous, n’hésitez pas à les perdre en mod_rewrite (cas n° 2).
Bon imaginons que vous stockez le sous répertoire de l’url, ici welcome, dans $dir :
1 |
if ($dir && !file_exists($dir)) { //Le topic n'existe pas //Hypothèse n° 1 - URL CodeIgniter //Hypothèse n° 2 - Erreur 404 //Vérifions la première hypothèse $tab = split('/', $dir); $c = $tab<a href="0">0</a>; if (file_exists("system/application/controllers/$c.php")) { //Appel de CodeIgniter define("FRAMEWORK", "CodeIgniter"); define("CI_URI_STRING", $dir); include("codeigniter.php"); } else { //Bon ben non, 404 alors } } |
Pour inclure, il existe plusieurs solutions, la plus simple étant : include(“http://www.votresite.com/igniter.php/$url”);
Oui sauf que votre framework gère les appels db, l’authentification, … donc vous souhaitez inclure igniter.php directement.
1 |
$_SERVER<a href="'PATH_INFO'">'PATH_INFO'</a> = $dir; include("igniter.php"); |
Vous remarquez que dans notre exemple, nous avons define(“CI_URI_STRING”, $dir) au lieu de $_SERVER‘PATH_INFO’ = $dir;
Si comme nous, vous n’avez pas envie de toucher à PATH_INFO, REQUEST_STRING & consort, par exemple parce que la suite de votre application l’utilise, vous pouvez demander à CodeIgniter de lire cette constante CI_URL_STRING en ajoutant dans la fonction _get_uri_string de libraries/Router.php (aux alentours de la ligne 290 pour CodeIgniter 1.5) :
1 |
// Is there a CI_URI_STRING constant ? if (defined('CI_URI_STRING')) { return CI_URI_STRING; } |
Notez que rien ne vous empêche également d’utiliser ceci si vous ne voulez pas modifier CodeIgniter :
1 |
$backup_path_info = $_SERVER<a href="'PATH_INFO'">'PATH_INFO'</a> $_SERVER<a href="'PATH_INFO'">'PATH_INFO'</a> = $dir; include("igniter.php"); $_SERVER<a href="'PATH_INFO'">'PATH_INFO'</a> = $backup_path_info; |
CAS 2 – Vous souhaitez réécrire les URL (mod_rewrite)
Imaginons que vous ayez deux controllers, Welcome et Quux.
Leurs url respectives commencent par /welcome et /quux.
Réécrivons les url en /igniter.php/welcome ou /igniter.php/quux/…
1 |
RewriteEngine On |
1 |
#Un seul fragment RewriteRule /quux/? /igniter.php/quux RewriteRule /welcome/? /igniter.php/welcome |
1 |
#Plusieurs fragments RewriteRule /welcome/(.+) /igniter.php/welcome/$1 RewriteRule /quux/(.+) /igniter.php/uux/$1 |
Cela signifie que vous pouvez développer une application dans le framework PHP de votre choix pour ensuite l’intégrer à Espace Win.
Par ailleurs, Pluton accepte aussi les CGI et plusieurs scripts sont déjà en TCL ou en Perl.
À vos devs 🙂