CI 묻고 답하기

제목 경로 설정 질문이요
글쓴이 앙마 작성시각 2013/05/28 14:15:25
댓글 : 12 추천 : 0 스크랩 : 0 조회수 : 17059   RSS
js나 css 혹은 img파일을 사용하려고 합니다

views에 폴더를 하나 만들어서 경로 사용시 <img src="폴더명/파일명.jpg"> 이런식으로 하면

이미지를 인식하지 못하네요

물론 js나 css도요 경로 설정은 어떻게 해야하나요??
 다음글 페이징질문이요 (2)
 이전글 DB Connection 예외처리 (6)

댓글

인스카 / 2013/05/28 14:31:24 / 추천 0
view 안에 만드시면 안되고, index.php가 있는 루트 하위에 적당한 폴더에 넣은 뒤, .htaccess 파일에서 처리를 해주셔야 합니다.


앙마 / 2013/05/28 14:45:09 / 추천 0
인스카//

메뉴얼 무엇을 찾아보면 나오나요;;
/ 2013/05/28 15:13:57 / 추천 0
앙마 //

메뉴얼... 이라기 보단

html에 가깝겠네요

view에서 파일을 연다고 생각하지 마시고

실제 ci가 열리는 url주소를 기준으로 생각해주세요

만약 url주소가 test.com/test/test/1 

이런식이고  view에서 경로를 src="test/1.jpg" 라고 했다면

실제 브라우져가 해석하는 경로는

test.com/test/test/1/test.1.jpg

입니다.


하지만 ci 의 url 구성 원리는 controller와 function + 인자 이니 실제 존재하지 않는 경로를 찾아가게 됩니다.

따라서 상대경로를 쓰는것은 어렵다고 보시면되고 (불가능하지는 않겠지만...어렵긴 하겠죠)

"/img/1.jpg" 처럼 절대경로로 작업을 하시는게 속편합니다.


물론 저 폴더는 htaccess에서  rewrite 규칙을 적용받지 않도록 작성해주셔야 합니다.
risa / 2013/05/28 15:20:20 / 추천 0
일반적인 방법을 하신다면

application
system

와 같은 곳에

css
js
img

이렇게 만드신다면 접근은

./css/  <- 이런식의 상대 접근이 됩니다. [점 or 피오리드 or 도트.... 아무튼 땡 하나 주의]

절대경로를 하고 싶으시면

BASE_URL 상수 정의 하시고
$http = "http://";
$host=$_SERVER["HTTP_HOST"];
$domain = $http.$host;

define("BASE_URL",$domain);


BASE_URL."/css";

이런식의 접근도 됩니다.







앙마 / 2013/05/28 15:27:24 / 추천 0
 키, risa//

답변 감사합니다

ci초보라 잘 이해가 되지는 않지만 일단을 넣어보는 식으로...

그런데 risa님 베이스 유알엘 설정은 어디에 있는 것을 설정해야 하는건가요? config.php를 말씀하시는 건가요?

그렇다면 application과 같은 라인에 만들었을 경우 views에 있는 php파일에서

 ./파일명.css   이런식으로 사용하면 되는건가요?

======================================================================================

경로가 나오기는 하지만 css소스를 보여주는 것이 아닌 그냥 페이지를 다시 찍어주네요ㅠㅠ

인덱스 죽이기를 안해서 그런가;;

risa / 2013/05/28 16:01:42 / 추천 0
일단 편의를 위해서 index.php 는 죽이시구요.

경로는 CI하고 상관없습니다.

이건 html 기본 입니다.

요컨데...

application
system 

밖에 있는건 당연히 일반 영역입니다.

CI를 설치했다고 해당 사이트가 전부 CI화가 되진 않습니다.

CI 없이 

/root/ 루트 디렉토리에

/root/css/
/root/js/

접근 방법은? 하고 같은 문제입니다.

컨트롤러에서 호출하든 뷰에서 몇단씩 밑으로 내려가든

./css/common.css <- 이런식의 접근은 별 문제없습니다. 좀더 가독성과 호환성을 위해서

BASE_URL.'/css/common.css';  을 사용할 뿐이지요.


상수 정의는 constants.php 에서 합니다.
config 폴더에 있습니다.

전 귀찮아서 아예 

jquery 랑 bootstrap 관련 JS 와 CSS 는 상수로 정의 했습니다.
앙마 / 2013/05/28 16:53:40 / 추천 0
 risa//

답변 감사합니다 상수 정의하신 자료좀 올려주시면 안될까요??
변종원(웅파) / 2013/05/28 17:33:09 / 추천 0
포럼소스 받아서 config/constants.php 보시면 도움이 될겁니다
앙마 / 2013/05/29 09:29:07 / 추천 0
웅파//

소스를 다운받아서 보니

$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http");
$config['base_url'] .= "://" . $_SERVER['HTTP_HOST'];
$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']), "", $_SERVER['SCRIPT_NAME']);

이게 있더군요;; 저희는 그냥 ip주소로 168...... 이런식으로 사용하는데 이걸 그대로 사용해도 되는건가요?

config저부분을 고쳐주지 않아서 그런지

A PHP Error was encountered

Severity: Notice

Message: Use of undefined constant JS_DIR - assumed 'JS_DIR'

Filename: views/head.php

Line Number: 9

JS_DIR/list.css">

이런 에러가 나네요ㅠ_ㅠ

css는 적용되지 않고요;;

물론 application이랑 같은 라인에 include 라는 파일을 만들고 그 안에 css라는 파일을 넣어서 만들어 놓았습니다

조언좀 해주세요
 

변종원(웅파) / 2013/05/29 10:03:15 / 추천 0
index.php 에서 var_dump($_SERVER); 찍어보세요.
그중에 아이피 나오는게 있을 겁니다. 무조건 아이피로만 사용한다면
constants.php의 $_SERVER['HTTP_HOST'] 를 아이피가 나오는걸로 바꾸면 됩니다.

그리고 위 에러는 JS_DIR라는 상수를 선언하지 않고 뷰에서 사용한겁니다.
에러 잘 보세요
변종원(웅파) / 2013/05/29 10:05:49 / 추천 0
그리고 시간 내서 포럼소스의 디렉토리 구조, 상수 사용 등등 보세요.
사람마다 스타일은 다르겠지만 실무에서 이렇게 저렇게 쓰다가 
나름 최적화한 구조를 쓴겁니다 

다른 사람이 만든 소스를 분석해보고 왜 저렇게 만들었을까 고민을 해보세요.
나라면 이렇게 만들거 같은데.. 뭔가 다른 이유가 있나..
이게 실력이 느는 비법입니다.
noh / 2013/05/29 14:21:04 / 추천 0
기술 검토중에 좋은 정보를 얻었네요.
BASE_URL을 상수로 설정하면 여러모로 편하겠네요.
감사합니다.