2011-01-31 3 views
0

내 컨트롤러가있다 ... 나는 URL을 입력하면Kohana 3의 컨트롤러의 before() 메소드에서 동작을 얻을 수 있습니까?

class Controller_Staff extends Controller { 

    public function before() { 
     parent::before(); 
     $id = $this->request->param('id'); 
     $action = $this->request->param('action'); 
    } 

    public function action_get($id) { 
     var_dump($id); 
    } 

} 

내 경로는 ...

Route::set('a', 'bla/<action>/<id>', 
      array('id' => '\d+', 'action' => '(get|set)')) 
    ->defaults(array(
     'controller' => 'staff', 
     'action' => 'set' 
    )); 

Controller_Staff->before() (action_get()를 호출하기 전에)를 호출 (bla/get/42), 나는에 $id에 액세스 할 수 있습니다 before()이지만, $action은 항상 NULL입니다.

before() 방법으로 현재 $action에 액세스하는 더 좋은 방법이 있습니까?

감사합니다.

+0

간단한 컨트롤러에서 before() 메서드를 호출하고 있습니까? 템플릿 하나에서만 존재한다고 생각하지 않습니까? – yoda

+0

@yoda 나는 그렇게 생각하지 않았다. 모든 액션에 대해 실행되는 코드를 배치하고자 했으므로이를 배치하는 것이 좋은 것처럼 보였습니다. – alex

+0

흠 .. before()와 after() 메소드가 controller_template에 속해 있다고 생각하고 (IRC에서) 들었습니다. 감사합니다. – yoda

답변

2

발견!

결국 매우이되었습니다.

$action = $this->request->action; 
+0

일이 쉬웠고 몇 번이나 잃어 버렸습니다. kohana rocks :) khana rocks :) – yoda

+0

Kohana 3.3 (dunno가 변경되었을 때, 어쩌면 그보다 이전 버전 일 수도 있음)에서는 속성이 아닙니다 : $ this-> request-> action() –

관련 문제