Я только начинаю с CodeIgniter, и я не уверен, куда идут такие вещи, как css, js и images. Вне всей папки системы кажется нормально, но это означает, что все отдельно. Внутри означает, что пути к файлу длиннее, и я беспокоюсь, что это может испортить ситуацию. Какая наилучшая практика по этой проблеме?
Где активы должны идти в проект воспламенения кода?
Ответ 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: