2012-01-02 2 views
6

뷰를 특정 케이스에서 렌더링하지 못하게해야하지만 렌더링을 방지하는 방법을 이해할 수 없습니다. cakephp에서 빈보기를 렌더링합니다.

나는
$this->autoRender=false 

을 시도하지만 난 일반 컨트롤러와 다르게 렌더링 관리 할 API를 엔진을 사용하고 아마 때문에 아무 일도 일어나지 않습니다. 누구든지이 일을하는 속임수를 아십니까? 사용중인 API 엔진에 대해 아무것도 모른 채

답변

0

, 어쩌면 이것이 기본 빈 레이아웃입니다 아약스 레이아웃 $this->layout = 'ajax'를 사용하는 빈 내용으로 빈 레이아웃을하고 $this->layout = 'empty_layout'

4

시도로 컨트롤러를 호출하려고 ajax 메소드에 사용됩니다.

3

솔루션을 검색하는 동안이 대답을 발견했습니다. 이 CakePHP 2.4.x에서 사용시 지금, 당신은 컨트롤러에서 다음 코드를 사용할 수 있습니다 : 이것은 렌더링되는 단지보기로 이어질 것입니다

$this->layout = false; 

, 레이아웃없이.

11

$this->layout = 'ajax'을 사용하는 것으로 충분하지 않습니다.

그러나이 두 줄을 사용하여 작동

:

$this->layout = 'ajax'; 
$this->render(false); 
2

그것은 오래된 질문입니다. 현재 cake-version은 3.x이며 빈 레이아웃을 사용하는 쉬운 방법이 있습니다.

만 컨트롤러에 추가 :

$this->viewBuilder()->autoLayout(false); 
+0

아직보기 파일을 검색하려고하는데 '오류 : ExampleController :: myAction()에 대한보기가 없습니다.'라는 메시지가 표시됩니다. –

0

CakePHP의 3 autoLayout(false) 방법을 다른 대답에서 여전히 시스템이 호출하고있는 조치에 대한 대응보기/템플릿 파일을 찾으려고 할 것이다. 출력이 전혀 필요 없기 때문에 이것은 나에게 효과적이지 않으므로 빈 템플릿을 렌더링해야했습니다.

비어있는 모든 동작에 대해 빈 0123B파일을 만드는 것은 실제로는 하나의 옵션을 가지고 다시 사용하기를 원하기 때문에 실제로는 옵션이 아닙니다. CakePHP 2는 컨트롤러가 app/View 폴더를 조사하도록 구성 할 수있는 $this->viewPath 속성을 가졌지 만 CakePHP 3 대체품은 여전히 ​​해당 컨트롤러와 접두사 폴더를 조사합니다. CakePHP3가 루트보기 경로에서 템플릿을 찾도록하는 것은 그리 명백한 방법이 아닙니다. 후자의 종류가있을 수 있음을 의미하기 때문에

$this->viewBuilder()->layout(false); 
$this->viewBuilder()->templatePath('.'); // this 
$this->viewBuilder()->template('my_blank_view'); 
또한

, 내가 대신 autoLayout(false)$this->viewBuilder()->layout(false)을 사용하고 있습니다 :

  1. 컨트롤러 액션에 다음을 추가 src/Template/my_blank_view.ctp
  2. 만들기 나중에 다른 레이아웃을 설정하면 layout(false)은 레이아웃이 필요 없다고 명시 적으로 설정합니다.

2
public function function_without_layout(){ 
    $this->viewBuilder()->autoLayout(false); 
    echo "hello Brij"; 
    exit; 
} 

$this->layout = false;은 CakePHP 버전 3에서 더 이상 사용되지 않습니다.CakePHP의 버전 3

2

에 대한
사용 $this->viewBuilder()->autoLayout(false);는 컨트롤러에이 추가 :

$this->autoRender = false; 

이 내 프로젝트에서 작동합니다.

관련 문제