Де я можу розміщувати файли зображень, css, js тощо у Codeigniter?


144

Де прийнятно розміщувати папки css та папки файлів зображень? Я думав усередині папки перегляду? Однак контролер завжди перенаправляє шлях до базової URL-адреси, тому я повинен вказати шлях у файлі .html до місця, де він знаходиться, що зайве.

Відповіді:


202

У мене таке налаштування:

  • застосування
  • система
  • активи
    • js
    • imgs
    • css

Потім у мене є допоміжна функція, яка просто повертає повний шлях до цього, залежно від моєї установки, щось подібне до:

додаток / helpers / utility_helper.php:

function asset_url(){
   return base_url().'assets/';
}

Зазвичай я зберігаю загальні підпрограми, подібні до цього, в тому самому файлі і автоматично завантажую його з конфігурацією автозавантаження кодування.

Примітка: помічник автоматичного завантаження URL-адреси для base_url()доступу.

application / config / autoload.php:

$autoload['helper'] = array('url','utility');

Потім у вас буде доступ до asset_url()всього коду.


1
привіт, Едді, мені цікаво, куди ти поставив код своєї функції .. чи повинен я поставити його у file_helper.php?
kebyang

3
Привіт @KebyangBlabla Я оновив свою відповідь трохи більше інформації, яка повинна вам допомогти.
Едді

10
Щоб отримати доступ до 'baseurl ()', вам також потрібно включити помічник 'url', як це:$autoload['helper'] = array('url', 'utility');
Джеффрі

Одним із кращих може бути папка ваших активів у папці веб-кореневих файлів (у мене є public_html), а потім CI у каталозі над коренем веб-сторінки.
Нейт Нолтінг

3
У разі інших схожі на мене, щоб уточнити, ви отримати доступ до нього , як це <= asset_url ();?> CSS / css.css
JonYork

50

Ні, всередині папки переглядів це не добре.

Подивіться: у вашому проекті має бути 3 основних папки:

system // Це рамки CI, не дуже багато причин торкатися цих файлів

застосування // тут іде ваша логіка, файли, які створюють додаток ,

public // це повинен бути вашим документом root

З міркувань безпеки краще зберігати рамки та додаток поза документами (public_html, htdocs, public, www ... тощо)

Всередині вашої загальнодоступної папки слід розмістити загальнодоступну інформацію про те, що можуть бачити браузери, загальне для пошуку папок: images, js, css; тож ваша структура буде:

|- system/
|- application/
|---- models/
|---- views/
|---- controllers/
|- public/
|---- images/
|---- js/
|---- css/
|---- index.php
|---- .htaccess

1
що таке index.php у загальнодоступній папці? це 404 файл? дякую
DeLe

Вибачте за затримку, але ось: lo: T Файл index.php буде файлом, який вловлює запит і викликає решту фрейму.
Хуан Джо

@Juan Jo .. Я використовую CodeIgniter-3.0.6.Я не можу знайти будь-яку папку з назвою. publicЧи є проблема, щоб додати папку з таким же ім'ям.
Ахіл Віджай

@AkhilVijay ви не знайдете його у своїй папці codeigniter, папка буде, коли ви розгортаєте його на будь-якому сервері
Anwar Hossain

найкращий спосіб працювати з кодигнатором, це зробити .htaccessдля видалення /index.php?та виклику загальнодоступної папкиbase_url().'public/yourfolder';
Роберт Бласко Вільярроя

16

Так я поводжусь із державними активами. Тут я використовую метод Bootstrap Phalcon PHP .

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

|-.htaccess*
|-application/
|-public/
  |-.htaccess**
  |-index.php***
  |-css/
  |-js/
  |-img/
  |-font/
  |-upload/
|-system

Файли для редагування

  1. .htaccess*

    Усі запити до проекту будуть перезаписані до загальнодоступних / каталогу, що робить його корінцем документа. Цей крок гарантує, що внутрішні папки проектів залишаються прихованими від публічного перегляду і тим самим виключає загрози безпеці такого типу. - 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]"

Сподіваюся, це допомагає :)


Ви перевірили вищевказаний код, я думаю, що в останньому рядку помилка, ви перенаправляєте всі запити, щоб /publicчому base_url ()."public/[...! Це має бути справедливим base_url ()."/[YOUR ASSET FOLDER]".
Керкуч

12

Зазвичай я розміщую всі мої файли у папці "Активи" в корені програми, а потім переконуюсь, що я використовую Asset_Helper, щоб вказати на ці файли для мене. Ось що пропонує CodeIgniter.


7

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

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

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


Я запізнююся на мільярд років, але якщо хтось читає це, ця відповідь була моїм початковим рішенням, але якщо ви керуєте доступом через віртуальних хостів, я думаю, що краща ідея вказати віртуального хоста на загальнодоступну папку та зберегти .htaccess config. Оновіть все одно, тому що ця відповідь вказує мені на рішення
Vertig0

5

Незалежно від того, куди ви помістите файл CSS, ви можете просто скористатися помічником CodeIgniter "html" під назвою link_tag (). Ви застосуєте цього помічника приблизно так:

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

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

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

Є багато помічників у програмі, що роблять подібні речі.


4

додайте в одну папку будь-яке ім'я, наприклад, загальнодоступне та додайте .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

Я використовую останню версію CodeIgniter 3.1.0. Структура папки його:

  • система
  • застосування
  • керівництво користувача
  • активи
    • образи
    • js
    • css

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


3

Я використовую таку структуру папок:

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

2

(Я новачок у Codeigniter, тому не знаю, чи це найкраща порада)

Я зберігаю загальнодоступні файли у своїй загальнодоступній папці. Їм логічно бути там, і я не хочу використовувати Codeigniter для чогось, для чого мені не потрібно.

Дерево каталогів виглядає приблизно так:

  • / заявка /
  • / громадські /
  • / public / css /
  • / public / img /
  • / громадські / js /
  • / система /

Єдині файли, які я зберігаю в / public /, це Codeigniter's index.php та мій файл .htaccess:

RewriteEngine On
RewriteBase /

RewriteRule ^css/ - [L]
RewriteRule ^img/ - [L]
RewriteRule ^js/ - [L]

RewriteRule ^index.php(.*)$ - [L]
RewriteRule ^(.*)$ /index.php?/$1 [L]

2

ви можете помістити папку css всередині папки asst (ви називаєте це будь-яке ім'я) в каталозі вашого проекту як:

- ci_app
- application 
- views      
- 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';

0

Привіт, наша структура схожа на Application, system, user_guide

створіть активи імен папок біля всіх папок, а потім всередині цієї папки активів створіть css та javascript та папки із зображеннями, покладіть усі свої css js замість папок

тепер перейдіть до header.php і зателефонуйте до CSS саме так.

<link rel="stylesheet" href="<?php echo base_url();?>assets/css/touchTouch.css">
  <link rel="stylesheet" href="<?php echo base_url();?>assets/css/style.css">
  <link rel="stylesheet" href="<?php echo base_url();?>assets/css/camera.css"> 

-2

The link_tag()Помічник явно спосіб зробити це. Помістіть свій css там, де він зазвичай належить, у site_root / css /, а потім скористайтеся помічником:

З документів CodeIgniter ...

echo link_tag('css/mystyles.css');

Вихідні дані

<link href="http://example.com/css/mystyles.css" rel="stylesheet" type="text/css" />
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.