Где я могу поместить файлы изображений, CSS, JS и т. Д. В Codeigniter?

144

Где допустимо поместить папки css и папки с файлами изображений? Я думал внутри папки просмотра? Однако контроллер всегда перенаправляет путь к базовому URL, поэтому я должен указать путь в файле .html к тому месту, где он находится, что является избыточным.

Triq
источник

Ответы:

202

У меня есть такая настройка:

  • применение
  • система
  • активы
    • JS
    • ГИМ
    • CSS

Затем у меня есть вспомогательная функция, которая просто возвращает полный путь к этому в зависимости от моих настроек, что-то похожее на:

Приложение / хелперы / utility_helper.php:

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

Обычно я буду хранить общие процедуры, подобные этой, в одном и том же файле и автоматически загружать его с помощью конфигурации автозагрузки codeigniter.

Примечание: автозагрузка URL помощника для base_url()доступа.

приложение / Config / autoload.php:

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

После этого у вас будет доступ ко asset_url()всему вашему коду.

Эдди
источник
1
Привет, Эдди, интересно, куда ты помещаешь свой код функции? Должен ли я поместить его в file_helper.php?
Кебянг
3
Привет @KebyangBlabla Я обновил свой ответ с немного больше информации, которая должна помочь вам.
Эдди
10
Чтобы получить доступ к 'baseurl ()', вам также необходимо включить помощника 'url', например:$autoload['helper'] = array('url', 'utility');
Джеффри
Возможно, лучше иметь папку с вашими ресурсами в корневой веб-папке (моя - public_html), а затем CI - в каталоге над корневым веб-сайтом.
Нейт Нолтинг
3
В случае, если другие похожи на меня, чтобы уточнить, вы получаете к нему доступ следующим образом <? = Asset_url ();?> Css / css.css
JonYork
50

Нет, внутри папки просмотров не хорошо.

Посмотрите: у вас должно быть 3 основных папки в вашем проекте:

system // Это CI-фреймворк. Причин не трогать эти файлы.

application // это куда идет ваша логика, файлы, которые составляют приложение ,

public // это должен быть ваш documentroot

По соображениям безопасности лучше хранить вашу инфраструктуру и приложение за пределами вашего rootroot (public_html, htdocs, public, www ... и т. Д.)

Внутри вашей общедоступной папки вы должны поместить свою общедоступную информацию, то, что видят браузеры, обычно для поиска папок: images, js, css; поэтому ваша структура будет:

|- system/
|- application/
|---- models/
|---- views/
|---- controllers/
|- public/
|---- images/
|---- js/
|---- css/
|---- index.php
|---- .htaccess
Хуан Джо
источник
1
что такое index.php в общей папке? это 404 файл? спасибо
DeLe
Извините за задержку, но за lo: T Файл index.php будет тем файлом, который будет перехватывать запрос и будет вызывать остальную часть фреймворка.
Хуан Джо
@Juan Jo .. Я использую CodeIgniter-3.0.6. Я не могу найти папку с именем. publicЕсть ли проблема, чтобы добавить папку с тем же именем.
Ахил Виджай
@AkhilVijay вы не найдете его в своей папке codeigniter, папка будет, когда вы развернете ее на любом сервере
Anwar Hossain
лучший способ работать с codeigniter, это сделать .htaccessдля удаления /index.php?и вызова публичной папки сbase_url().'public/yourfolder';
Роберт Бласко Вильярройя
16

Вот как я обращаюсь с общественными активами. Здесь я использую метод Bootstrap Phalcon PHP .

Структура папок

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

Файлы для редактирования

  1. .htaccess*

    Все запросы к проекту будут переписаны в каталог public /, что сделает его корневым документом. Этот шаг гарантирует, что внутренние папки проекта остаются скрытыми от публичного просмотра и, таким образом, устраняет угрозы безопасности такого рода. - Phalconphp Doc

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

    Правила проверят, существует ли запрошенный файл, и если он существует, его не нужно переписывать модулем веб-сервера. - 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***

    Изменить applicationпуть и systemпуть как,

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

Теперь вы используете publicпапку какbase_url()."public/[YOUR ASSET FOLDER]"

Надеюсь это поможет :)

Ijas Ameenudeen
источник
Вы тестировали приведенный выше код, я думаю, что в последней строке есть ошибка, вы перенаправляете все запросы, /publicтак почему base_url ()."public/[...? Это должно быть просто base_url ()."/[YOUR ASSET FOLDER]".
Kerkouch
12

Обычно я помещаю все свои файлы в папку «assets» в корне приложения, а затем я использую Asset_Helper, чтобы указать мне эти файлы. Это то, что предлагает CodeIgniter.

гражданин Конн
источник
7

Никто не говорит, что вам нужно изменить .htacces и добавить каталог в состоянии перезаписи. Я создал каталог "public" в корневом каталоге вместе с "system", "application", "index.php". и отредактировал файл .htaccess так:

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

Теперь вам нужно просто позвонить. <?php echo base_url()."/public/yourdirectory/yuorfile";?> Вы можете добавить подкаталог в "public" dir по своему усмотрению.

Крекер
источник
Я опоздал на несколько миллиардов лет, но если кто-то читает это, этот ответ был моим первоначальным решением, но если вы управляете доступом через виртуальные хосты, я думаю, что это лучшая идея - указать виртуальный хост на общую папку и сохранить Конфигурация .htaccess. В любом случае,
поднимите
5

Независимо от того, куда вы поместили CSS-файл, вы можете просто использовать помощник CodeIgniter «html» с именем link_tag (). Вы бы применили этот помощник примерно так:

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

Это зависит от вас, чтобы найти файл CSS в наиболее подходящем месте (по вашему мнению). Вам придется либо автоматически загрузить помощник "html", либо отдельно загрузить его, чтобы использовать его.

Люди продолжают предлагать использование base_url () для достижения этой цели, но на самом деле это не совсем «CodeIgniter» способ сделать это (я думаю, у этого вопроса есть несколько дубликатов). Это будет работать, но одной из причин использования фреймворка является использование внутри него готовых функций.

В Codeigniter есть много помощников, которые делают подобные вещи.

Сыр Тост
источник
4

добавьте в одну папку любое имя, например, public, и добавьте файл .htaccess и запишите разрешение от всех, значит, в этой папке все ваши файлы и все папки не будут выдавать ошибку Доступ запрещен! используйте это так

<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

Я использую последнюю версию CodeIgniter 3.1.0. Структура папок это:

  • система
  • применение
  • гид пользователя
  • активы
    • изображений
    • JS
    • CSS

Вот где вы должны поместить изображения, файлы CSS и JS в папку активов.

крутая
источник
3

Я использую следующую структуру папок:

application 
system 
static
    admin
        js
        css
        images
    public
        js
        css
        images
    uploads
        original
        thumbs
скорпион
источник
2

(Я новичок в Codeigniter, поэтому я не знаю, если это лучший совет)

Я храню общедоступные файлы в своей общей папке. Для них логично быть там, и я не хочу использовать Codeigniter для чего-то, для чего мне не нужно его использовать.

Дерево каталогов выглядит так:

  • /применение/
  • / Государственные /
  • / Государственный / CSS /
  • / Открытый / IMG /
  • / Государственные / JS /
  • / Система /

Единственные файлы, которые я храню в / public /, это index.php Codeigniter и мой файл .htaccess:

RewriteEngine On
RewriteBase /

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

RewriteRule ^index.php(.*)$ - [L]
RewriteRule ^(.*)$ /index.php?/$1 [L]
Энтони Скайф
источник
2

Вы можете поместить папку css в папку сборка (вы называете это любое имя) в каталоге вашего проекта как:

- ci_app
- application 
- views      
- assets 
  - css 
    - style.css 

... когда вы хотите загрузить этот файл на странице, вы можете использовать функцию base_url () следующим образом: <head> <link rel='stylesheet' href='<?php echo base_url();?>assets/css/style.css'> </head> и вы обязательно добавите base_url вашего проекта в файл config.php следующим образом:

$config['base_url'] = 'http://localhost/ci_app';
Рабаб Ш
источник
0

Привет наша структура как приложение, система, user_guide

создайте ресурсы с именами папок рядом со всеми папками, а затем внутри этой папки активов создайте папки css, javascript и images, поместите все ваши css js в папки

Теперь перейдите в header.php и вызовите CSS так же, как это.

<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"> 
Пиюш Дханотия
источник
-2

link_tag()Помощник явно способ сделать это. Поместите ваш css туда, где он обычно находится, в site_root / css /, а затем используйте помощник:

Из документов CodeIgniter ...

echo link_tag('css/mystyles.css');

Вывод

<link href="http://example.com/css/mystyles.css" rel="stylesheet" type="text/css" />
Стивен С
источник