2012-12-26 1 views
1

내 응용 프로그램에서 특정 동작 이름에 렌더링을 사용하려고합니다. 는 사실, 여기 내 조건 내 AppController가 설정되어 :: afterFilter()를 cakephp render + afterfilter 변수가 설정 해제되었습니다.

if($this->action == 'parameter') { 
     $this->render('/Elements/parameter'); 
    } 
    else if($this->action == 'datagrid') { 
     $this->render('/Elements/datagrid'); 
    } 

그리고 내 컨트롤러 /samples/parameter에서

: 나는 변수의 정의 후에 렌더링해야 할 것을 알고

  $this->set('model', Inflector::singularize(Inflector::camelize($this->name))); 
     $this->set('controller', $this->name); 
     if($parameter_id) { 
      $this->set('mode', $mode); 
      $this->set('parameter', $this->Sample->find('first', array('conditions' => array('Sample.id' => $parameter_id)))); 
     } else { 
      $this->set('mode', 'add'); 
      $this->set('parameter', array()); 
     } 

, 그래서 내가 사용하는 afterFilter 내가 이해하지 못했던 무엇인가 놓쳤는가?

정보를 정기적으로는 : 나는 Samples Controller에서 함수

public function afterFilter(){ 
     parent::afterFilter(); 
    } 

여러분 모두 감사를 설정!

답변

2

렌더링 프로세스가 완료된 후에 afterFilter() 콜백을 이라고 부릅니다. 따라서 render()을 호출하면 잘못 처리됩니다.

렌더 할 뷰를 변경하려면 beforeRender()에서 렌더링하십시오. 그래서 뭔가를 할

if ($this->action == 'parameter') { 
    $this->view = '/Elements/parameter'; 
} elseif ($this->action == 'datagrid') { 
    $this->view = '/Elements/datagrid'; 
} 
+0

Aaaaah! 좋습니다, 설명해 주셔서 감사합니다! 지금은 잘 작동합니다. – user1928845

관련 문제