144 votes

Où dois-je mettre les fichiers image, css, js, etc. dans Codeigniter ?

Où est-il acceptable de placer les dossiers css et les dossiers de fichiers d'images ? Je pensais à l'intérieur du dossier de la vue ? Cependant, le contrôleur redirige toujours le chemin vers l'url de base. Je dois donc spécifier le chemin dans le fichier .html pour savoir où il se trouve, ce qui est redondant.

206voto

Eddie Points 3872

J'ai une installation comme celle-ci :

  • application
  • système
  • actifs
    • js
    • imgs
    • css

J'ai ensuite une fonction d'aide qui renvoie simplement le chemin d'accès complet à cette fonction, en fonction de ma configuration, quelque chose de similaire à :

application/helpers/utility_helper.php :

function asset_url(){
   return base_url().'assets/';
}

J'ai l'habitude de garder les routines communes similaires à celle-ci dans le même fichier et de les autoloader avec la configuration autoload de codeigniter.

Remarque : l'assistant URL autoload pour base_url() accès.

application/config/autoload.php :

$autoload['helper'] = array('url','utility');

Vous aurez alors accès à asset_url() dans votre code.

1 votes

Bonjour Eddie, je me demande où tu as mis ton code de fonction dois-je le mettre dans file_helper.php ?

3 votes

Bonjour @KebyangBlabla J'ai mis à jour ma réponse avec un peu plus d'informations qui devraient vous aider.

10 votes

Pour avoir accès à 'baseurl()', vous devez également inclure l'aide 'url', comme ceci : $autoload['helper'] = array('url', 'utility');

50voto

Juan Jo Points 180

Non, dans le dossier des vues n'est pas bon.

Regardez : Vous devez avoir 3 dossiers de base sur votre projet :

système // Il s'agit du framework CI, il n'y a pas beaucoup de raisons de toucher à ces fichiers.

application //C'est là que va votre logique, les fichiers qui font l'application. ,

public // ceci doit être votre documentroot

Pour des raisons de sécurité, il est préférable de garder votre framework et l'application en dehors de votre documentroot, (public_html, htdocs, public, www... etc).

Dans votre dossier public, vous devez mettre vos informations publiques, ce que les navigateurs peuvent voir, il est commun de trouver les dossiers : images, js, css ; ainsi votre structure sera :

|- system/
|- application/
|---- models/
|---- views/
|---- controllers/
|- public/
|---- images/
|---- js/
|---- css/
|---- index.php
|---- .htaccess

1 votes

Qu'est-ce que l'index.php dans le dossier public ? est-ce le fichier 404 ? merci

0 votes

Désolé pour le retard, mais pour le lo : T Le fichier index.php sera le fichier qui attrapera la requête et appellera le reste du framework.

0 votes

@Juan Jo J'utilise CodeIgniter-3.0.6. Je ne trouve aucun dossier appelé public Y a-t-il un problème pour ajouter un dossier avec le même nom ?

16voto

IJas Points 2380

C'est ainsi que je gère les biens publics. Ici, j'utilise Phalcon PHP de la méthode Bootstrap.

Structure des dossiers

|-.htaccess*
|-application/
|-public/
  |-.htaccess**
  |-index.php***
  |-css/
  |-js/
  |-img/
  |-font/
  |-upload/
|-system

Fichiers à modifier

  1. *`.htaccess`**

    Toutes les demandes adressées au projet seront réécrites à l'adresse suivante public/ répertoire ce qui en fait la racine du document. Cette étape permet de s'assurer que les dossiers internes internes du projet restent cachés au public et éliminent ainsi les les menaces de sécurité de ce type. - Phalconphp Doc

    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteRule  ^$ public/    [L]
        RewriteRule  (.*) public/$1 [L]
    </IfModule>
  2. `.htaccess`**

    Les règles vérifient si le fichier demandé existe et, si c'est le cas, il ne doit pas être réécrit par le module du serveur web. - Phalconphp Doc

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php/$1 [QSA,L]
    </IfModule>
  3. **index.php*****

    Modifiez le application et le system chemin comme,

    $system_path = '../system';
    $application_folder = '../application';

Maintenant, vous utilisez le public comme base_url()."public/[YOUR ASSET FOLDER]"

J'espère que cela vous aidera :)

0 votes

Avez-vous testé le code ci-dessus, je pense qu'il y a une erreur sur la dernière ligne, vous redirigez toutes les requêtes à /public alors pourquoi base_url ()."public/[... ! Cela devrait être juste base_url ()."/[YOUR ASSET FOLDER]" .

12voto

citizen conn Points 8905

J'ai l'habitude de placer tous mes fichiers de ce type dans un dossier "assets" dans le Root de l'application, puis je m'assure d'utiliser un fichier de type Asset_Helper pour pointer vers ces fichiers pour moi. C'est ce que suggère CodeIgniter.

7voto

Kreker Points 669

Personne ne dit qu'il faut modifier le .htacces et ajouter le répertoire dans la condition de réécriture. J'ai créé un répertoire "public" dans le répertoire racine avec "system", "application", "index.php". et modifié le fichier .htaccess comme ceci :

RewriteCond $1 !^(index\.php|public|robots\.txt)

Maintenant vous devez juste appeler <?php echo base_url()."/public/yourdirectory/yuorfile";?> Vous pouvez ajouter des sous-répertoires dans le répertoire "public" comme vous le souhaitez.

0 votes

Je suis un bazillion d'années en retard, mais si quelqu'un lit ceci, cette réponse était ma solution initiale, mais si vous gérez l'accès par des hôtes virtuels, je pense que c'est une meilleure idée de faire pointer l'hôte virtuel vers le dossier public et de garder la configuration .htaccess. Upvotez quand même parce que cette réponse m'a conduit à la solution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X