2013-08-09 1 views
0

나는 다음과 같은 컨트롤러가 : 내 코드 내 코드에이 복사하려고하는 경우에는CakePHP의 컨트롤러 동작은

<?php 
//Import controller 
App::import('Controller', 'Posts'); 

class CommentsController extends AppController { 
    //Instantiation 
    $Posts = new PostsController; 
    //Load model, components... 
    $Posts->constructClasses(); 

    public function index($passArray = array(1,2,3)) { 
     //Call a method from PostsController with parameter 
     $Posts->doSomething($passArray); 
    } 
} 
?> 

:

App::import('Controller', 'Users'); 
class EmployeesController extends AppController 
{ 

} 

지금 another StackOverflow question 다음을 수행했다 다음과 같습니다
App::import('Controller', 'Users'); 

class EmployeesController extends AppController { 

    public $name = 'Employee'; 
    $Users = new UsersController; 

내가 구문 오류가 나는 어쨌든 그것을 실행하는 경우 내가 치명적인 잘못을 얻을 또는.

내 질문은 어떻게 다른 컨트롤러에서 함수를 호출합니까?

+4

당신이하고있는 일은 크게 틀립니다. 그런 식으로 다른 컨트롤러에 컨트롤러를 포함 할 수는 없습니다. 모델 또는 구성 요소를 사용하여 기능을 공유하십시오. 또한 $ 이름을 삭제하십시오. 귀하의 경우에는 그 어쨌든 잘못 선언했다. 또한 CakePHP2.x에서는 App :: import()도 사용하지 않습니다. 추신 : 당신은 항상 당신이 사용하고있는 정확한 cakephp 버전을 언급해야합니다. – mark

답변

2

그렇지 않습니다.

내가 링크 된 질문의 대답을 읽었습니다. 그리고 Mark Story (핵심 CakePHP 기고가)는 의견에서이를지지합니다.

귀하의 요구 사항이 정확히 무엇인지 모르겠지만 로직을 모델로 옮기고 싶을 것입니다. MVC에서는 항상 '뚱뚱한 모델, 스키니 컨트롤러'를 생각해보십시오.

질문이 있으시면 의견을 물어 보거나 질문을 업데이트하십시오. 답변을 추가 정보로 업데이트하겠습니다.

+0

나는 또한 cakePHP 핵심 개발자이지만 Mark Story는 아니지만 (Mark Scherer ^^). – mark

+0

그래, 나는 알고있다. 나는 당신의 코멘트를보기 전에 나의 대답을 썼다. .. ?? –

+0

그걸 수정하지 못하는 것 같아요. D – mark