Подтвердить что ты не робот

Где активы должны идти в проект воспламенения кода?

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

4b9b3361

Ответ 1

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

/system
/css
/js
/img

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

Ответ 2

Лично я разорвать каталог 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. Кроме того, вы не должны вносить изменения в ядро ​​- имея единственный каталог, в котором хранится ваше ядро, и все ссылки на проекты сохраняют вещи DRY.

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

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

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

To: $system_path = '../../CISYSTEM/210';

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

To: $application_folder = '../../projekt_application';


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

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

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

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

Приветствия

Ответ 3

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

Ответ 4

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

Из-за этого вы можете использовать такие функции:

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

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

Ответ 5

base_url()/CSS/name.css

Ответ 6

Чтобы использовать помощник site_url (url) таким образом, вы должны сначала настроить Apache mod_rewrite (или эквивалент), чтобы удалить сегмент index.php из URI.

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

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

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