2011-08-13 3 views
0

다른 require()을 내 CI 컨트롤러에 추가하지 않으려면 어떻게해야합니까?Propel 1.6 - 질문 정보 포함

나의 이전 프로젝트 인 question about integrating Propel의 후속 조치로서 좀 더 복잡한 문제가 있습니다. 내 응용 프로그램 컨트롤러에 생성 된 클래스를 포함하려고합니다. 여기에 코드입니다 :

require_once('PolicytypeQuery.php'); 

class PolicyType extends CI_Controller { 

    function PolicyType() { 
     parent::get_instance(); 
    } 


    function index() { 
     $data = array(); 
     $data['policytypes'] = PolicytypeQuery::create()->find(); 

     $this->load->view('policytype_view',$data); 
    } 

} 

생성 된 클래스는 몇 가지 기본 클래스에 따라, 나는이 기본 클래스가 이미 어딘가에 포함되지 않았 음을 나타냅니다 오류가 점점 오전 :

[Sat Aug 13 16:22:56 2011] [error] [client 97.97.177.2] PHP Fatal error: 
Class 'BasePolicytypeQuery' not found in 
/var/lib/IPV/util/build/classes/vault/PolicytypeQuery.php on line 16 

내가 생각을 코드를 생성하면 필요한 require() 문도 생성됩니다. 그러나, 그렇게 나타나지 않습니다 생성 된 코드로 require() 문을 추가하기 위해 추진 발생기 옵션은

/** 
* Skeleton subclass for performing query and update operations on the 'policytype' table. 
* 
* 
* 
* You should add additional methods to this class to meet the 
* application requirements. This class will only be generated as 
* long as it does not already exist in the output directory. 
* 
* @package propel.generator.vault 
*/ 
class PolicytypeQuery extends BasePolicytypeQuery { 

} // PolicytypeQuery 

있습니까? 아니면 내 프로젝트에서 Propel을 올바르게 자동로드하지 않는 것일 수도 있습니다. 이를 위해, 나는 CodeIgniter를 함께 추진를 통합하는이 튜토리얼을 따라 :

3 단계 당

http://codeigniter.com/wiki/Using_Propel_as_Model/

, 내가 자동으로 적재 라이브러리의 추진을 포함하고있다. 이것이 내 문제를 해결해야합니까?

답변

1

예. 그렇습니다.

PHP에는 autoloading classes이라는 기능이 있습니다. propel을 잘 모르지만 __autoload을 올바르게 사용하면 require을 더 이상 사용할 필요가 없습니다.

0

Propel에는 사용해야하는 자체 오토로더가 있습니다.

CI에 초기화 단계에서

, 당신은 따라서 추진을 초기화해야합니다 (CI 링크의 2 단계 참조) : 파일, 데이터베이스 conf.php, 변환-conf의 명령에 의해 생성되는 것을

Propel::init('/path/to/database-conf.php'); 

autoloader 클래스 맵인 classmap-database-conf.php와 함께 사용합니다. 전자는 후자를 포함합니다. 일단 Propel 클래스가 자동으로로드되면 완료됩니다.