Куда должны идти активы в проекте CodeIgniter? - PullRequest
18 голосов
/ 07 октября 2008

Я только начинаю с CodeIgniter, и я не уверен, куда должны идти такие вещи, как css, js и images. Снаружи вся системная папка выглядит нормально, но это означает, что все отдельно. Внутри означает, что пути к файлам длиннее, и я беспокоюсь, что это может испортить ситуацию. Какова лучшая практика в этом вопросе?

Ответы [ 6 ]

15 голосов
/ 07 октября 2008

Обычно я помещаю отдельные папки в корневой каталог, поэтому я получаю структуру каталогов, подобную этой:

/system
/css
/js
/img

Кажется, работает для меня - когда вы используете site_url(url), генерируемый им URL-адрес получается из корня, поэтому вы можете использовать site_url('css/file.css') для генерации URL-адресов для ваших таблиц стилей и т. Д.

6 голосов
/ 04 августа 2012

Лично я вырываю каталог application из каталога system и делаю его родным system. Затем я создаю каталог проекта в public_html (www), куда я перемещаю index.php и сохраняю свои открытые ресурсы.

Предположим, проект, над которым вы работаете, называется projekt. В родительском каталоге public_html (www) создайте каталог с именем CISYSTEM, а внутри этого каталога создайте каталог из используемой версии 202, 210 и т. Д.

/CISYSTEM
    /202
    /210
    /another_CI_version
/projekt_application
    /models
    /views
    /controllers
    /private_assets
/public_html
    /projekt
        index.php
        .htaccess
        css
        img
        js
        lib

Прелесть этой структуры каталогов в том, что она добавляет еще один уровень безопасности и упрощает обновление / замену ядра CI. Кроме того, вы не должны вносить изменения в ядро ​​- имея единый каталог, в котором хранится ваше ядро, и имея ссылки на все проекты, оно сохраняет СУХУЮ вещь.

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

Откройте index.php и перенаправьте пару вещей:

Изменение: $system_path = 'system';

Кому: $system_path = '../../CISYSTEM/210';

Изменение: $application_folder = 'application';

Кому: $application_folder = '../../projekt_application';


Кроме того, я вижу много людей, говорящих об использовании site_url() в других ответах. Я рекомендую менее подробный способ использования site_url() ... вам не нужно каждый раз вызывать его, если вы используете элемент HTML <base>:

<base href="<?= site_url();?>">

Просто включите это в <head> вашего приложения, и вы сможете напрямую вызывать свои контроллеры ... как в:

<a href='controllername/functionname'>Some Action</a>

* * Ура тысяча сорок-девять
1 голос
/ 19 апреля 2011

Чтобы использовать таким образом помощник site_url (url), вы ДОЛЖНЫ сначала настроить Apache mod_rewrite (или эквивалентный) для удаления сегмента index.php из URI.

В противном случае метод site_url добавляет index.php к URL-адресу, который, вероятно, испортит пути к вашим ресурсам, если они есть в базовом каталоге, как указано выше.

Вот документация CodeIgniter по удалению index.php из URI:

http://codeigniter.com/wiki/mod_rewrite/

1 голос
/ 07 сентября 2010

base_url () / CSS / name.css

1 голос
/ 08 октября 2008

Я считаю, что лучше всего держать активы на корневом уровне. Вы можете использовать <?=base_url()?> для отображения полного корня сайта. В конфигурационном файле вы настраиваете корень сайта. Это утверждение только подтверждает это.

Из-за этого вы можете использовать такие включения:

<link href="<?=base_url()?>/css/style.css" rel="stylesheet" type="text/css" />

в любом месте вашего кода, и он все равно получит http://example.com/css/style.css.

1 голос
/ 07 октября 2008

Я ненавижу иметь так много каталогов на корневом уровне, поэтому я использую / public и использую htaccess для перезаписи / scripts в / public / scripts и так далее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...