2014-02-23 2 views
0

URL 리디렉션없이 액세스중인 페이지에 로그인 양식을 표시하려고합니다. Module.php에서 경로를 전달할 수 있습니까? 예 : 클라이언트가/스테이션/"사용자/로그인"경로로 전달하는 경우 외부 리디렉션이 없으면 비공개 페이지에서 로그인 양식을 보려고합니다.리디렉션없이 Module.php에서 다른 경로로 전달하는 방법은 무엇입니까?

public function onBootstrap(MvcEvent $e){ 
    # .... other 
    $eventManager->attach(MvcEvent::EVENT_ROUTE, array($this, 'checkAuth'), -100); 
} 
public function checkAuth(MvcEvent $e){ 
    # ... get auth service 
    if (!$auth->hasIdentity()) { 
     # smth like this 
     $router = $e->getRouter()->setRoutes(array('zfcuser/login')); 
     return $router; 
    } 
    return; 
} 

이 코드는 Uncaught exception 'Zend\Mvc\Router\Exception\RuntimeException' with message 'Could not find prototype with name zfcuser/login'을 발생시킵니다.

그래서 질문은 다음과 같습니다. 어떻게 Module.php에서 경로를 대체 할 수 있습니까?

답변

0

다른 질문에 대한 @samsonasik 의견 덕분에 문제가 해결되었습니다.

public function checkAuth(MvcEvent $e){ 
    # ... get auth service 
    if (!$auth->hasIdentity()) { 
     $e->getRouteMatch() 
        ->setParam('controller', 'zfcuser') 
        ->setParam('action', 'login'); 
    } 
    return; 
} 

그래서 외부 리디렉션없이 경로를 변경했습니다.