2017-12-10 15 views
1

도우미 함수 내에서 forward() 함수를 사용하고 싶습니다. 불행히도 나는 그것을 관리 할 수 ​​없다.phalcon forward() 도우미 함수에서 작동하지 않습니다.

인 IndexController :

class IndexController extends ControllerBase 

    public function indexAction() 
     $helper = new CustomFunctions(); 
     $helper->log(); 
     die('still here'); 

    { 
{ 

CustomFunctions

class CustomFunctions extends \Phalcon\DI\Injectable{ 
    public function log(){ 
     //... 
     $this->dispatcher->forward([ 
      'controller' => 'error', 
      'action'  => 'route404' 
     ]); 

     return false; 
    } 

} 

왜 앞으로 didnt가 작동합니까? 그것은 인덱스 컨트롤러에서 메시지를 표시하는 대신 오류 컨트롤러로 전달해야합니다. 모든 조언에 감사드립니다.

답변

1

dispatcher->forward은 팔콘에서 그렇게 작동하지 않습니다. 그것은 단지 다른 컨트롤러와 액션을 실행하기위한 단축형 일 뿐이지 만, 현재 컨트롤러 나 액션에서 나가거나 리턴하지는 않습니다. 즉, $helper->log();이 false를 반환하는지 확인해야합니다. 그렇다면 return; 또는 exit;이라고 가정합니다. 전달 대신 리디렉션을 사용한다고해도 클라이언트의 브라우저로 헤더를 전송하더라도 여전히 Phalcon을 통해 전송되고 전송됩니다 팔콘이 머리말을 보내라는 말을 듣고 이렇게하면 실제로 머리글을 사용하여 물건을 설정하는 것과는 달리 팔콘의 것들에 대한 테스트를 작성할 수 있습니다. 즉시 퇴장하지 않으면 중간에 테스트를 중단하지 않고 ->forward->redirect과 같은 것을 테스트 할 수 있습니다. 조기 종료를 에뮬레이트해야하는 경우 throw 접근 방식을 시도한 다음 이러한 오류를 포착하여 시간이 exit;인지 확인하십시오. 이 방법을 사용하면 테스트 할 수있는 동안 exit;의 이점을 얻을 수 있습니다. 또는 당신은 단지 등 이미 그것을 가지고 다이, 등, 또는 오류 컨트롤러에서 exit;을 던져 수

당신은 파견 루프에서 읽을 할 수 있습니다 : 내가 볼
https://docs.phalconphp.com/en/3.2/dispatcher

+0

을, 감사합니다 선생님 :) – boosterV

+0

리다이렉트가 작동 중입니다; p $ response-> redirect ('route404') -> send() – boosterV