2010-06-16 6 views
1

J'ai besoin de charger des contrôleurs et des modèles à partir d'un dossier différent de celui par défaut. J'utilise un système Linux.Comment changer le répertoire source Controllers/Models dans CodeIgniter

Je construis une simple application CI pour certaines personnes, pour une utilisation sur un hébergement partagé que je possède. Mais je veux leur donner accès uniquement au dossier/views et certains fichiers/config. Et c'est pourquoi j'ai besoin de stocker les contrôleurs et les modèles dans un dossier différent au même niveau que le dossier/public_html ou peut-être quelque part dans le système Linux.

Je considère que ce serait une meilleure solution que l'encodage des fichiers

Répondre

0

CodeIgniter vous permet d'organiser vos contrôleurs, vues et fichiers de configuration dans les sous-dossiers. Pour autant que je sache, il ne le permet pas pour les modèles (au moins la documentation ne le mentionne pas, je ne me suis pas essayé).

Comme vous êtes dans un système Linux, vous pouvez créer un lien symbolique pour faire référence à un autre répertoire du système de fichiers.

Vous pouvez donc créer les répertoires:

application/config/public 
application/controllers/public 
application/views/public 

Et puis créez dans votre répertoire/public_html liens symboliques ponting à ces répertoires:

/public_html/config -> application/config/public 
/public_html/controllers -> application/controllers/public 
/public_html/views ->application/views/public 

Lorsque télécharger vos clients des fichiers vers/public_html/config, ils seront également disponibles dans application/config/public. La même chose s'applique pour/public_html/controllers et/public_html/views.

La commande syntaxis à crée des liens symboliques est

# ln -s target name 

i.e.:

# ln -s application/config/public /public_html/config 

Si vous ne disposez pas de la console à votre hébergement, vous pouvez créer des liens en utilisant la fonction PHP symlink().

Pour charger un view/config/controller depuis un sous-répertoire, vous n'avez qu'à ajouter le nom du répertoire dans l'appel de fonction $ this-> load -> ...(). i.e:

$this->load->view('public/my_view); 

Consultez la documentation de CI pour plus d'informations sur l'organisation de vos fichiers dans des sous-dossiers.

+0

Merci beaucoup. Je pensais à des liens symboliques, je sais à propos de ln, mais pourrait être un peu risqué. de toute façon, jetez un oeil ici: http://codeigniter.com/forums/viewthread/158193/ et oui, ma méthode fonctionne pour les bibliothèques et les modèles. juste vérifié. demain je vais vérifier le vôtre. Merci. –

Questions connexes