답변:
다음과 같은 설정이 있습니다.
그런 다음 설정에 따라 단순히 전체 경로를 반환하는 도우미 함수가 있습니다.
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()
코드 전체에 액세스 할 수 있습니다.
$autoload['helper'] = array('url', 'utility');
아니요, 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
public
하고 있습니다. 이름이 같은 폴더를 찾을 수 없습니다 . 같은 이름의 폴더를 추가하는 데 문제가 있습니다.
.htaccess
제거를 위해 /index.php?
와 함께 공용 폴더를 호출base_url().'public/yourfolder';
이것이 내가 공공 자산을 처리하는 방법입니다. 여기서는 Phalcon PHP 의 Bootstrap 방법을 사용합니다.
|-.htaccess*
|-application/
|-public/
|-.htaccess**
|-index.php***
|-css/
|-js/
|-img/
|-font/
|-upload/
|-system
.htaccess*
프로젝트에 대한 모든 요청은 public / 디렉토리에 다시 작성되어 문서 루트가됩니다. 이 단계는 내부 프로젝트 폴더를 공개적으로 볼 수 없도록하여 이런 종류의 보안 위협을 제거합니다. - Phalconphp 문서
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
.htaccess**
규칙은 요청 된 파일이 존재하는지 여부를 확인하고 존재하는 경우 웹 서버 모듈에서 다시 쓸 필요가 없습니다. - Phalconphp 문서
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
</IfModule>
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]"
.
나는 보통 그와 같은 모든 파일을 응용 프로그램 루트의 "자산"폴더에 넣은 다음 Asset_Helper 를 사용 하여 해당 파일을 가리켜 야합니다. 이것이 CodeIgniter가 제안한 것입니다.
아무도 .htacces를 수정하고 다시 쓰기 조건으로 디렉토리를 추가해야한다고 말하지 않습니다. 루트 디렉토리에 "public"디렉토리를 "system", "application", "index.php"와 함께 만들었습니다. 다음과 같이 .htaccess 파일을 편집했습니다.
RewriteCond $1 !^(index\.php|public|robots\.txt)
이제 <?php echo base_url()."/public/yourdirectory/yuorfile";?>
"public"디렉토리 안에 서브 디렉토리를 추가 할 수 있습니다.
CSS 파일의 위치에 관계없이 link_tag ()라는 CodeIgniter "html"도우미를 사용할 수 있습니다. 이 도우미를 다음과 같이 적용하십시오.
echo link_tag('folder/subfolder/stylesheet.css');
CSS 파일을 가장 적절한 위치에 배치하는 것은 사용자의 책임입니다. "html"도우미를 자동로드하거나이를 사용하려면 별도로로드해야합니다.
사람들은 이것을 달성하기 위해 base_url ()의 사용법을 계속 제안하지만 실제로는 그것을 수행하는 "CodeIgniter"방법이 아닙니다 (이 질문에는 몇 가지 중복이 있다고 생각합니다). 그것은 작동하지만 프레임 워크를 사용하는 이유 중 하나는 미리 만들어진 함수를 사용하는 것입니다.
codeigniter에는 이러한 종류의 작업을 수행하는 많은 도우미가 있습니다.
하나의 폴더에 이름을 추가하십시오. 예를 들어 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>
(나는 Codeigniter를 처음 사용하므로 이것이 최선의 조언인지 모르겠습니다)
공개 폴더에 공개적으로 사용 가능한 파일을 보관합니다. 그들이 거기에있는 것이 논리적이며, 내가 그것을 필요로하지 않는 것에 Codeigniter를 사용하고 싶지 않습니다.
디렉토리 트리는 다음과 같습니다.
내가 / 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]
프로젝트 디렉토리의 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';
안녕하세요 우리의 구조는 응용 프로그램, 시스템, 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">
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" />