Куда должны направляться ресурсы в проекте CodeIgniter?

StackOverflow https://stackoverflow.com/questions/178519

  •  05-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

/system
/css
/js
/img

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

Другие советы

Лично я разрываю 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>

Ваше здоровье

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

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

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

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

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

base_url()/css/name.css

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top