0

컨트롤러 수준에서 예외 처리에 문제가 있습니다. 기본적으로 나는 하나의 컨트롤러가 FOO 컨트롤러, abcAction 및 xyz 동작을 가진 다른 컨트롤러 BOOO를 가지고있다. 이제 abc 안에 xyz를 호출해야하고 그 출력을 사용해야합니다. abc에서는 Exception을 throw하는 다른 API를 호출합니다. abc에서 우리는 try catch를 사용하여 그러한 excptions을 처리하고 있으며 코드는 뷰를 renedring하지 않고 완벽하게 실행됩니다. 빈 페이지가오고있다.젠드 컨트롤러 이상한 문제

코드 우리는 우리가 빈 페이지를지고 예외가 발생 될 때마다

class FooController extends Zend_Controller_Action { 
    function abcAction(){ 
     //some code here 
     //no based on the parameters we are calling other action 
     $view = new Zend_View();  
     try{ 
      $view->action('xyz','Boo','',$params); 
     }catch(Exception $e){ 
      //handling exception 
     } 

    } 
} 

class BooController extends Zend_Controller_Action { 
    function xyzAction(){ 
     //some code here 
     //calling other api where we are throwing exception if some conditions are not met and normally my error controller will handle it. 
    } 
} 

. 그래서 나는이 뷰 객체를 $ this -> _ helper-> actionStack() 으로 대체했습니다. 이제 오류 컨트롤러 phtml과 abcaction phtml이 렌더링됩니다.

어떻게 제거하나요? 다른 행동 안에서 행동을 부르는 다른 방법이 있습니까?

답변

1

ZF1의 경우 ActionStack 액션 도우미가 올바른 방법입니다. 문제는 디스패치 루프를 다시 실행하고 예외가 발생할 때 오류 컨트롤러가 해당 루프의 일부라는 것입니다.

abc에서 예외가 발생하는 경우 xst를 actionstack에 추가하지 않아도됩니다.

이 질문에 원래 zend-framework2으로 태그를 추가 했으므로, Forward 컨트롤러 플러그인이 ZF2에서이 작업을 수행하는 방법입니다.

+0

치명적인 오류가 발생합니다. 메서드 "forward"가 존재하지 않으며 __call()에 갇히지 않았습니다. 현재 우리는 zend 1.6을 사용하고 있습니다. – karunakar

+0

한 번 xyz 예외가 throw됩니다 나는 그것을 올바르게 처리 후 일부 코드를 실행해야합니다. 그리고 abc phtml 파일을 렌더링해야합니다. 여기에서 문제가 발생했습니다. abc phtml과 함께 내 errorcontroller phtml 파일도 렌더링 .. 어떻게 dispatch 루프 에서이 execptions을 제거 할 수 있습니까? – karunakar

+0

조치 방법에서 예외가 누출되지 않는다면 디스패치 루프가 어떻게 발생했는지 알 수 없습니다. –