2012-07-05 4 views
1

나는 플러그인이로드 된 다음 플러그인을 사용하여 모델에 첨부하면 더 많은 플러그인을 확인하려고하는 모델이 있습니다. 이 방법을 사용하고 있습니까? 그러나 모델과 액션이 다른 결과를 가져옵니다. 플러그인 검사를 위해 더 많이 바인딩하는 것보다 다른 방법이 더 좋습니다.cakephp 첨부 더

class Comment extends AppModel { 

/** 
* @see Model::$belongsTo 
*/ 
    public $belongsTo = array(
     'Content' => array(
      'className' => 'Content', 
      'foreignKey' => 'object_id', 
      'conditions' => array(
       'Comment.object_id = Content.id', 
      ) 
     ), 
    ); 

/** 
* @see Model::__construct 
*/ 
    public function __construct($id = false, $table = null, $ds = null) { 
     // parent 
     parent::__construct($id, $table, $ds); 

     // check for newsstudio 
     if (CakePlugin::loaded('NewModel')) { 
      $this->bindModel(
       array('belongsTo' => array(
        'NewModel' => array(
         'className' => 'NewModel.NewModel', 
         'foreignKey' => 'object_id', 
         'conditions' => array(
          'Comment.object_id = NewModel.id', 
         ) 
        ) 
       ) 
      )); 
     } 

     var_dump($this->belongsTo); // correct! NewModel added to blongsto 
    } 
} 

// but in action during use. Plugin loaded but 
var_dump($this->Comment->belongsTo); // incorrect! just `Content` added 

답변

0

당신이 __construct에서 그 일을하는 고려, 당신은뿐만 아니라 그냥 당신이 추가 메서드 호출을 수행하지 않는 한 몇 CPU 사이클을 절약 할 부모를 호출하기 전에 $belongsTo 속성을 추가 할 수 있습니다.

class Comment extends AppModel { 

/** 
* @see Model::$belongsTo 
*/ 
    public $belongsTo = array(
     'Content' => array(
      'className' => 'Content', 
      'foreignKey' => 'object_id', 
      'conditions' => array(
       'Comment.object_id = Content.id', 
      ) 
     ), 
    ); 

/** 
* @see Model::__construct 
*/ 
    public function __construct($id = false, $table = null, $ds = null) { 
     // check for newsstudio 
     if (CakePlugin::loaded('NewModel')) { 
      $this->belongsTo['NewModel'] = array(
         'className' => 'NewModel.NewModel', 
         'foreignKey' => 'object_id', 
         'conditions' => array(
          'Comment.object_id = NewModel.id', 
         ) 
        ); 
     } 
     parent::__construct($id, $table, $ds); 
    } 
}