web-dev-qa-db-fra.com

Où puis-je placer des fichiers image, css, js, etc. dans Codeigniter?

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

135
triq

J'ai une configuration comme celle-ci:

  • application
  • système
  • les atouts
    • js
    • imgs
    • css

J'ai ensuite une fonction d'assistance qui renvoie simplement le chemin complet vers celui-ci en fonction de ma configuration, quelque chose de similaire à:

application/helpers/utility_helper.php:

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

Je vais généralement conserver les routines communes similaires à celles-ci dans le même fichier et les charger automatiquement avec la configuration autoload de codeigniter 

Remarque: Aide d’URL de chargement automatique pour l’accès à base_url().

application/config/autoload.php:

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

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

183
Eddie

Non, l'intérieur du dossier des vues n'est pas bon.

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

system // Ceci est le framework CI il n'y a pas beaucoup de raisons de toucher à ces fichiers

application // c'est ici que va votre logique, les fichiers qui rendent l'application,

public // ce doit être votre documentroot

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

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

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

Voici comment je gère les actifs publics. Ici, j'utilise la méthode Bootstrap de Phalcon PHP .

Structure des dossiers

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

Fichiers à éditer

  1. .htaccess*

    Toutes les demandes relatives au projet seront réécrites dans le répertoire public/. ce qui en fait la racine du document. Cette étape garantit que le .__ interne. Les dossiers de projet restent cachés de l'affichage public et élimine ainsi .__ menaces de sécurité de ce genre. - Phalconphp Doc

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

    Rules vérifiera si le fichier demandé existe et, le cas échéant, le ne doit pas être réécrit par le module de 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 leapplicationpath et lesystempath en tant que,

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

Maintenant, vous utilisez le dossierpublicen tant quebase_url()."public/[YOUR ASSET FOLDER]"

J'espère que cela t'aides :)

13
Ijas Ameenudeen

Je mets généralement tous mes fichiers comme cela dans un dossier "assets" à la racine de l'application, puis je m'assure d'utiliser un Asset_Helper pour désigner ces fichiers à ma place. C'est ce que suggère CodeIgniter.

11
citizen conn

Personne ne dit que vous devez modifier le fichier .htacces et ajouter le répertoire dans la condition de réécriture . J'ai créé un répertoire "public" dans le répertoire racine à côté de "système", "application", "index.php ". et édité le fichier .htaccess comme ceci:

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

Vous devez maintenant appeler <?php echo base_url()."/public/yourdirectory/yuorfile";?>Vous pouvez ajouter un sous-répertoire dans le répertoire "public" à votre guise.

7
Kreker

Peu importe l’endroit où vous placez le fichier CSS, vous pouvez simplement utiliser l’assistant "html" de CodeIgniter appelé link_tag (). Vous appliqueriez cette aide quelque chose comme ceci:

echo link_tag('folder/subfolder/stylesheet.css');

Il vous appartient de localiser le fichier CSS à l’endroit le plus approprié (à votre avis). Vous devrez soit charger automatiquement l'aide "html" ou le charger séparément pour l'utiliser.

Les gens continuent à suggérer l'utilisation de base_url () pour y parvenir, mais ce n'est pas vraiment la méthode "CodeIgniter" pour le faire (je pense que cette question comporte quelques doublons). Cela fonctionnera, mais l'une des raisons d'utiliser un framework est d'utiliser les fonctions prédéfinies qu'il contient. 

Dans Codeigniter, il existe de nombreuses aides pour faire ce genre de chose.

4
Cheesus Toast

ajoutez un dossier n’importe quel nom, par exemple public et ajoutez .htaccess fichier et écrivez autorisez de tout cela signifie que, dans ce dossier, tous vos fichiers et tous les dossiers ne donneront pas d’erreur Accès interdit! utilise-le comme ça

<link href="<?php echo base_url(); ?>application/public/css/style.css" rel="stylesheet" type="text/css"  />
<script type="text/javascript" src="<?php echo base_url(); ?>application/public/js/javascript.js"></script>
4
Sandeep Mehra

J'utilise la dernière version de CodeIgniter 3.1.0 . La structure de ce dossier est la suivante:

  • système
  • application
  • mode d'emploi
  • les atouts
    • images
    • js
    • css 

C’est là que vous devez placer les fichiers images, css et js dans le dossier assets. 

3
coolest

J'utilise la structure de dossiers suivante:

application 
system 
static
    admin
        js
        css
        images
    public
        js
        css
        images
    uploads
        original
        thumbs
2
Scorpion

vous pouvez mettre le dossier css dans le dossier assest (vous le nommez n'importe quel nom) dans le répertoire de votre projet comme suit:
ci_app

application 
vues 
les atouts 

         css 
             style.css 

... lorsque vous souhaitez charger ce fichier dans une page, vous pouvez utiliser la fonction base_url () de cette façon: <head> <link rel='stylesheet' href='<?php echo base_url();?>assets/css/style.css'> </head> et vous êtes sûr d’ajouter base_url de votre projet dans le fichier config.php fichier comme ceci:

$config['base_url'] = 'http://localhost/ci_app';
1
Rabab Sh

(Je suis nouveau sur Codeigniter, donc je ne sais pas si c'est le meilleur conseil)

Je conserve des fichiers accessibles au public dans mon dossier public . Il est logique qu'ils soient présents et je ne souhaite pas utiliser Codeigniter pour quelque chose pour lequel je n'ai pas besoin de l'utiliser.

L'arborescence de répertoires ressemble à ceci:

  • /application/ 
  • /Publique/ 
  • / public/css / 
  • / public/img / 
  • / public/js / 
  • /système/

Les seuls fichiers que je conserve dans/public/sont le fichier index.php de Codeigniter et mon fichier .htaccess:

RewriteEngine On
RewriteBase /

RewriteRule ^css/ - [L]
RewriteRule ^img/ - [L]
RewriteRule ^js/ - [L]

RewriteRule ^index.php(.*)$ - [L]
RewriteRule ^(.*)$ /index.php?/$1 [L]
1
Anthony Scaife

Bonjour, notre structure ressemble à Application, système, guide utilisateur. 

créez un actif de nom de dossier juste à côté de tous les dossiers, puis à l'intérieur de ce dossier, créez un dossier css, javascript et des images mettez tous vos fichiers css dans les dossiers 

maintenant, allez à header.php et appelez le CSS comme ça.

<link rel="stylesheet" href="<?php echo base_url();?>assets/css/touchTouch.css">
  <link rel="stylesheet" href="<?php echo base_url();?>assets/css/style.css">
  <link rel="stylesheet" href="<?php echo base_url();?>assets/css/camera.css"> 
0
Piyush Dhanotiya