2012-04-12 7 views
0

그래서 AJAX 요청에 의해 호출 된 스크립트가 있으며 CI 설치 루트에 'ajax'라는 폴더에 있습니다.외부 스크립트 CI에서 database.php 호출

define("BASEPATH", "../../system/"); 
include("../../application/config/database.php"); 

그래서이 성공적으로 database.php 파일을 잡고 있지만 '선택에는 데이터베이스'이 없다는 것을 나에게 말하고있다 : 내 아약스 파일의 상단에이 코드가 있습니다. 왜?

+0

표준 CI 컨트롤러로 Ajax 호출을하고 싶지 않은 이유는 무엇입니까? – AndrewR

+0

앱 폴더 밖에있는 디렉토리에있는 경우 어떻게하나요? – Sneaksta

+0

굉장! 나는 그것을 알아. 모델에서 직접 데이터를 출력하는 것이 좋다고 생각하십니까? 그런 식으로 컨트롤러에 보낼 필요가 없으며 다른 출력으로 보낼 수도 있습니다. 아니면 정말 나쁜 습관입니까? – Sneaksta

답변

0

모델 내에서 데이터를 출력하면 codeIgniter가 달성하고자하는 mvc의 일반적인 구조가 깨집니다. 하지만 mvc는 엄격하게 표준이 아닌 디자인 패턴이므로 향후 자신이나 다른 사람을 해치거나 자신의 코드를 처리 할 사람을 해치는 것은 아닙니다.

AndrewR이 제안한 것과 마찬가지로 컨트롤러에 대한 아약스 호출을 만들지 마시오. [다시 mvc 규칙이므로]? 앱 폴더 밖에있을 경우 웹 브라우저를 통해 액세스 할 수 없습니다.

은 또한 당신은 $_CI =& get_instance();에서와 CodeIgniter의의 전역 객체의 인스턴스를 잡고이 도움이 $db = $_CI->load('database');

희망 같은 데이터베이스 개체를로드 할 수!

+0

감사합니다. 앤드류가 제안한 방식을 사용하여 결국 나는 끝내기를 기쁘게 생각합니다! 훨씬 더 의미가 있습니다! 나는 Ajax 컨트롤러에 대한 액세스를 거부하여 사용자를 교활하게 만들 수 있습니다. 모든 작업이 멋지게 완료되었습니다! 기존의 방법을 사용하고 싶지 않은 이유는 많은 데이터베이스 쿼리가 실행되는 등 시간을 절약 할 수 있기 때문입니다. – Sneaksta

관련 문제