2009-07-21 2 views
0

저는 실제로 같은 동작을하는 컨트롤러가 2 개 있습니다. 다른 컨트롤러에서 동일한 작업을 어떻게 참조합니까? 내가 AdminController에 넣어 무엇을 :: listAction을 위 난 단지 UserController :: listAction에서 코드를 작성해야 있도록젠드 프레임 워크 액션을 복제하지 않고 '복사'하는 방법?

class UserController extends Zend_Controller_Action { 

    public function listAction() { 
      //do something here 
    } 
} 

class AdminController extends Zend_Controller_Action { 

    public function listAction() { 
      //how to call UserController::listAction here? 
    } 
} 

?

감사

답변

0

당신은 다른 행동을 전달할 수 있습니다 - 단순히 액션, 컨트롤러, 모듈과 PARAMS를 지정합니다. 현재의 요구, 즉 기본 모듈 인 경우의 값

매개 변수 기본값은 아래의 코드는 기본 모듈 UserController의 listAction로 리디렉션됩니다.

class AdminController extends Zend_Controller_Action { 

    public function listAction() { 
      //call UserController::listAction 
      return $this->_forward('list', 'user'); 
    } 
} 
3

당신은 할 수 : 변경할 URL을 선호하는 경우

class AdminController extends Zend_Controller_Action { 
    public function listAction() { 
     $this->_forward('list','user'); 
    } 
} 

또는 :

class baseController extends Zend_Controller_Action { 
// common controller actions 
    public function listAction() { 
     // do stuff 
    } 
} 

class AdminController extends baseController { 
// admin controller specific actions 
} 

class UserController extends baseController { 
// base controller specific actions 
} 

또한 사용하여 다른 컨트롤러에 요청을 전달 할 수

class AdminController extends Zend_Controller_Action { 
    public function listAction() { 
     $this->_redirect('/user/list'); 
    } 
} 
7

나는 컨트롤러 액션을 사용 도우미, 그런 식으로 다시 똑같은 일을해야한다면 다시 사용할 수 있습니다.

class My_Controller_Action_Helper_Whatever 
{ 
    public function direct() 
    { 
     return $this; 
    } 

    public function doSomething($paramA, $paramB) 
    { 
     // code 
     return $whatever; 
    } 
} 

그런 다음 컨트롤러에서 구현 :

class UserController extends Zend_Controller_Action 
{ 
    public function someAction() 
    { 
     $this->getHelper('Whatever')->doSomething($a, $b); 
    } 
} 

class AdminController extends Zend_Controller_Action 
{ 
    public function anotherAction() 
    { 
     $this->getHelper('Whatever')->doSomething($a, $b); 
    } 
}