2013-01-22 3 views
2

Lithium의 컨트롤러 redirect() 메서드는 실제 HTTP 리디렉션을 수행합니다. 그러나 HTTP 리디렉션없이 다른 컨트롤러/동작에 요청을 전달하는 방법이 있습니까?리튬 전달 요청

예를 들어 인증 레이어를 추가하고 사용자를 "/ auth/login"페이지로 리디렉션하지 않고 요청한 페이지의 콘텐츠가 아닌 로그인 레이아웃과 템플릿이 렌더링됩니다. 그런 다음 양식을 제출하고 인증하면 이미 요청한 페이지에 있습니다. Zend 프레임 워크는 _forward() 메소드와 비슷한 기능을합니다.

감사합니다.

답변

4

당신이 코드의 약 2 라인에서 할 수있는 대부분 때문에, 아무 방법도 없다 : 나는 /이 섹시한 얼마나 깨끗하고 믿을 수

<?php 

    namespace my_app\controllers; 

    use lithium\core\Libraries; 

    class PostsController extends \lithium\action\Controller { 

     public function index() { 
      $forward = Libraries::instance("controllers", "Auth", [ 
       'request' => $this->request 
      ]); 
      return $forward($this->request, ['action' => 'login']); 
     } 
    } 
?> 
+0

! (의도 한 말장난) –

+0

$ forward를 돌려주는 대신에 저를 위해 일을 처리하기 위해 바로 렌더링해야했습니다. ''' $ forward-> render(); exit(); ''' – AKnox