2013-05-22 2 views
1
나는 구성 요소를 생성하고이 구성 요소에 내가 다른 컨트롤러/액션로 리디렉션하려고 노력하지만, 나는 오류가

"Error: Call to undefined method SessionRestComponent::redirect()"CakePHP의는 - 어떻게 구성 요소에 리디렉션

내 구성 요소 코드 :

function iniciaSessao($username=''){ 
       $_SESSION['username'] = $username; 
           // debug(isset($_SESSION['username'])); 
           if (isset($_SESSION['username'])) { 
            $this->redirect(array('controller' => 'registos', 'action' => 'indexUser')); 
           } 
      } 

누구나 나를 도와 줄 수 있습니까?

답변

7

예를 들어 초기화() 또는 시작()에서 컨트롤러를 가져와야합니다. 그런 다음이 컨트롤러를 사용하여 리디렉션하십시오.

public function startup(Controller $controller) { 
    $this->Controller = $controller; 
} 

public function iniciaSessao() { 
    ... 
    $this->Controller->redirect($url); 
} 

$ _SESSION을 직접 사용하지 말고 $ this-> Session 구성 요소를 문서화 된대로 사용하십시오. 당신은 사용자 정의 구성 요소에 구성 요소를 추가해야합니다 CakePHP의 3을 사용하는 사람들을 위해

public $components = array('Session'); 
+0

감사합니다. 하지만 '$ this-> Controller-> redirect ($ url);'라고 말하면 $ this-> Users-> redirect ('index')를 사용합니까? (예를 들면) 나는 미안하지만 나는 이해하지 못한다. – Jcbo

+0

아니, 나는 정확히 내가 쓴 것을 의미한다. 말 그대로. 구성 요소는 일반적으로 정확한 컨트롤러를 알아야 할 필요는 없습니다. 그 반대의 주위에. – mark

+0

하지만 코드를 사용하는 방법을 이해하지 못합니다. :/ 이 $ this-> Controller-> redirect ('UsersController/login');를 사용했습니다. 그리고 나는 같은 오류가 있습니다. – Jcbo

2

여기 a link입니다. 내부 구성 요소

function iniciaSessao($username=''){ 
    ... 
    $this->_registry->getController()->redirect($url); 
}