Где я могу поместить файлы изображений, CSS, JS и т. Д. В Codeigniter? - PullRequest
137 голосов
/ 09 июля 2011

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

Ответы [ 13 ]

187 голосов
/ 09 июля 2011

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

  • применение
  • система
  • активы
    • 1010 * 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() по всему коду.

49 голосов
/ 09 июля 2011

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

Посмотрите: В вашем проекте должно быть 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
14 голосов
/ 14 марта 2014

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

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

|-.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]"

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

11 голосов
/ 09 июля 2011

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

7 голосов
/ 04 февраля 2013

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

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

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

4 голосов
/ 06 июня 2013

добавьте в одну папку любое имя, например 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 голосов
/ 18 мая 2013

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

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

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

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

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

3 голосов
/ 28 августа 2016

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

  • system
  • application
  • user_guide
  • assets
    • images
    • js
    • css

Здесь вы должны поместить файлы изображений, css и js в папку активов.

2 голосов
/ 10 января 2019

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

приложениеПросмотры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';
2 голосов
/ 14 сентября 2015

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

application 
system 
static
    admin
        js
        css
        images
    public
        js
        css
        images
    uploads
        original
        thumbs
...