2012-08-06 2 views
0

다음과 같이 구성 요소를 작성했습니다.컨트롤러의 통화 구성 자 생성자

저는 이것을 AppController의 $ components 변수에서 호출하고 있습니다. 다음과 같이 UsersController를 작성했습니다.

class UsersController extends AppController { 
    public function oauth_call_back() { 

    } 
} 

그래서 oauth_call_back의 행동에 나는 GoogleApiComponent의 객체를 생성하고 또한 매개 변수를 사용하여 생성자를 호출 싶어요. CakePHP 2.1에서 어떻게합니까?

답변

3

설정 속성 : 으로 Configure :: read() 값을 전달하거나 생성자 논리를 구성 요소의 initialize() 메서드 내에 넣을 수 있습니다.

class MyComponent extends Component 
{ 
    private $client; 

    public function __construct (ComponentCollection $collection, $settings = array()) 
    { 
     parent::__construct($collection, $settings); 
     $this->client = new apiClient(); 
     $this->client->setApprovalPrompt ($settings['approval']); 
    } 
} 

다음 UsersController이 쓰기 :

public $components = array (
    'My' => array (
     'approval' => Configure::read('approvalPrompt'); 
    ) 
); 

또는 같은 구성 요소를 쓸 수 있습니다 : 나는 Component 클래스에 모습을 가지고 당신을 추천 할 것입니다

class MyComponent extends Component 
{ 
    private $client; 

    public function __construct (ComponentCollection $collection, $settings = array()) 
    { 
     parent::__construct($collection, $settings); 
     $this->client = new apiClient(); 
    } 

    public function initialize() 
    { 
     $this->client->setApprovalPrompt (Configure::read('approvalPrompt')); 
    } 
} 

, 이는 CORE/lib/Controller/Component.php 내에 있습니다. 소스 코드를 읽을 때 배울 점에 놀라실 것입니다.