2013-10-24 1 views
3

나는 ajax 레이아웃을로드하려고 시도하지만 항상로드되는 기본 레이아웃입니다.Cakephp 2.4.2 - 아약스 레이아웃 대신 기본 레이아웃로드

public function getByZone() { 
     $this->layout = 'ajax';  
     ... 
    } 

그래서 내 콤보 상자 내 default.ctp 대신 웹에 아무것도 작동 찾을 수 없습니다 내 "아약스 대답은"나는 많은 솔루션을 시도했습니다

을 모두 포함한다. 난 내 의 AppController의 모든 beforeRender이없는 경우 $this->layout = false, $this->render('my_view_name', false), $this->autoRender = false,

비활성화 레이아웃은 ... 참조

당신이 어떤 솔루션을 도와 주셔서 잘 감사가있는 경우

.

+0

'$ this-> layout = 'ajax';'보기 파일 –

+0

에 'ajax.ctp'가 존재합니까? – Ross

+0

방금보기 파일 상단에 $ this-> layout = 'ajax'를 추가하려고했지만 아무 것도 변경되지 않았습니다. 그리고 예 ajax.ctp가 존재합니다. 다른 레이아웃과 마찬가지로 View/Layouts/ajax.ctp에 있습니다. @Deekey가 편집 해 주셔서 감사합니다. – hidewak

답변

0

먼저 브라우저에서 일반 URL로 시도하십시오. 그것은 당신의 아약스 전화 또는 귀하의 코드에 뭔가 있는지 알려줄 것입니다. 일반적으로 나는 물건을 단순화하려고 노력하므로 문제를 일으키는 일이 적습니다.

0

나는 Cakephp 2.0을 가지고 있고 2.4로 업그레이드되었고,이 질문을 만났을 때 나는 같은 문제가 있음을 확신하게되었다. 나는

$this->render('/Layouts/ajax', 'ajax'); 

$this->render('ajax', 'success'); 

을 변경 결국하지만 그게 전부가 아니에요! 또한, 어쩌면 그냥 내가 일을 한 일부 klugy 방법 때문에, 나는이 URL을 http://myurl.com/controller/action?bozopants=1 내 HTTP 매개 변수 bozopants 즉

$this->request->query 

$this->request->params['url'] 

변경은 현재 $이 같은 컨트롤러에서 해결 -> request-> query [ 'bozopants']

물론 이것은 엄격한 Auth 제한이있는 컨트롤러에서 발생합니다.

1

는 "getByZone"기능에 액세스하거나 필요한 경우 APP에 로그인 할 수 있는지 확인하십시오, 아마 페이지에 리디렉션이 $this->autoRender = false;

0

단지에만 JSON 출력을 렌더링하기 위해 다음과 같은 라인을 사용하고 있습니다 :은 "아약스"레이아웃에서

$this->set("data", $myData); 
// $this->render(string $view, string $layout); 
    $this->render(false, "ajax"); // Not using a view, only using a layout "ajax". 

을 변수 $ 데이터는 viewVariable로 사용할 수 있습니다.

관련 문제