Codeigniter에서 이미지 파일, CSS, JS 등을 어디에 배치합니까?


144

CSS 폴더와 이미지 파일 폴더를 어디에 넣을 수 있습니까? 뷰 폴더 안에서 생각하고 있었습니까? 그러나 컨트롤러는 항상 기본 URL의 경로를 다시 라우팅하므로 .html 파일의 경로를 지정해야합니다. 이는 중복됩니다.

답변:


202

다음과 같은 설정이 있습니다.

  • 신청
  • 체계
  • 자산
    • js
    • imgs
    • CSS

그런 다음 설정에 따라 단순히 전체 경로를 반환하는 도우미 함수가 있습니다.

application / helpers / utility_helper.php :

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

나는 보통 같은 파일에 공통 루틴을 유지하고 codeigniter의 자동로드 구성으로 자동로드합니다.

참고 : base_url()액세스를 위한 자동로드 URL 도우미 .

application / config / autoload.php :

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

그러면 asset_url()코드 전체에 액세스 할 수 있습니다.


1
안녕 에디, 함수 코드를 어디에 넣을 까 궁금합니다. file_helper.php에 넣어야합니까?
kebyang

3
안녕 @KebyangBlabla 나는 당신을 도울 약간의 정보로 내 답변을 업데이트했습니다.
Eddie

10
'baseurl ()'에 액세스하려면 다음과 같이 'url'도우미를 포함해야합니다.$autoload['helper'] = array('url', 'utility');
Jeffrey

웹 루트 (광산은 public_html) 폴더에 자산 폴더를두고 웹 루트 위의 디렉토리에 CI를 두는 것이 좋습니다.
Nate Nolting

3
다른 사람들이 나와 같다면 명확히하기 위해 <? = asset_url ();?> css / css.css
JonYork

50

아니요, views 폴더 내부는 좋지 않습니다.

보기 : 프로젝트에 3 개의 기본 폴더가 있어야합니다.

system // CI 프레임 워크이므로이 파일을 터치 할 이유가별로 없습니다

application // 논리가가는 곳, 어플리케이션을 만드는 파일 ,

공개 // 이것은 문서 루트 여야합니다

보안상의 이유로 프레임 워크와 응용 프로그램을 documentroot 외부에 유지하는 것이 좋습니다 (public_html, htdocs, public, www ... 등).

공용 폴더 안에는 브라우저가 볼 수있는 공용 정보, 폴더를 찾기위한 공통 정보 (image, 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

@Juan Jo .. CodeIgniter-3.0.6을 사용 public하고 있습니다. 이름이 같은 폴더를 찾을 수 없습니다 . 같은 이름의 폴더를 추가하는 데 문제가 있습니다.
Akhil Vijay 2016 년

@AkhilVijay 당신은 codeigniter 폴더에서 찾을 수 없습니다, 어떤 서버에 배포 할 때 폴더가 될 것입니다
Anwar Hossain

CodeIgniter의 작업은 가장 좋은 방법 그것은을 만들고 .htaccess제거를 위해 /index.php?와 함께 공용 폴더를 호출base_url().'public/yourfolder';
로버트 Blasco는 Villarroya

16

이것이 내가 공공 자산을 처리하는 방법입니다. 여기서는 Phalcon PHP 의 Bootstrap 방법을 사용합니다.

폴더 구조

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

편집 할 파일

  1. .htaccess*

    프로젝트에 대한 모든 요청은 public / 디렉토리에 다시 작성되어 문서 루트가됩니다. 이 단계는 내부 프로젝트 폴더를 공개적으로 볼 수 없도록하여 이런 종류의 보안 위협을 제거합니다. - Phalconphp 문서

    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteRule  ^$ public/    [L]
        RewriteRule  (.*) public/$1 [L]
    </IfModule>
  2. .htaccess**

    규칙은 요청 된 파일이 존재하는지 여부를 확인하고 존재하는 경우 웹 서버 모듈에서 다시 쓸 필요가 없습니다. - Phalconphp 문서

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

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"디렉토리 안에 서브 디렉토리를 추가 할 수 있습니다.


나는 몇 년간 늦었지만,이 글을 읽는 사람이라면이 대답은 내 초기 솔루션이지만 가상 호스트를 통한 액세스를 관리하는 경우 가상 호스트를 공용 폴더로 가리키고 유지하는 것이 좋습니다. .htaccess 설정. 이 답변이 해결책을
제시해 주므로

5

CSS 파일의 위치에 관계없이 link_tag ()라는 CodeIgniter "html"도우미를 사용할 수 있습니다. 이 도우미를 다음과 같이 적용하십시오.

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

CSS 파일을 가장 적절한 위치에 배치하는 것은 사용자의 책임입니다. "html"도우미를 자동로드하거나이를 사용하려면 별도로로드해야합니다.

사람들은 이것을 달성하기 위해 base_url ()의 사용법을 계속 제안하지만 실제로는 그것을 수행하는 "CodeIgniter"방법이 아닙니다 (이 질문에는 몇 가지 중복이 있다고 생각합니다). 그것은 작동하지만 프레임 워크를 사용하는 이유 중 하나는 미리 만들어진 함수를 사용하는 것입니다.

codeigniter에는 이러한 종류의 작업을 수행하는 많은 도우미가 있습니다.


4

하나의 폴더에 이름을 추가하십시오. 예를 들어 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

최신 버전의 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 /
  • / public / js /
  • /체계/

내가 / public /에 보관하는 유일한 파일은 Codeigniter의 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

프로젝트 디렉토리의 assest 폴더 안에 css 폴더를 넣을 수 있습니다.

- ci_app
- application 
- views      
- assets 
  - css 
    - style.css 

... 페이지에 해당 파일을로드 할 때 base_url () 함수를 다음 <head> <link rel='stylesheet' href='<?php echo base_url();?>assets/css/style.css'> </head> 과 같이 사용할 수 있습니다 : config.php 파일에서 프로젝트의 base_url을 다음과 같이 추가하십시오 :

$config['base_url'] = 'http://localhost/ci_app';

0

안녕하세요 우리의 구조는 응용 프로그램, 시스템, user_guide와 같습니다

모든 폴더 근처에 폴더 이름 자산을 만든 다음이 자산 폴더 안에 CSS 및 javascript 및 images 폴더를 만듭니다. 모든 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

link_tag()도우미 명확하게이 작업을 수행 할 수있는 방법입니다. site_root / css /에서 CSS가 일반적으로 속한 곳에 넣고 도우미를 사용하십시오.

에서 된답니다 문서 ...

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

산출

<link href="http://example.com/css/mystyles.css" rel="stylesheet" type="text/css" />
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.