2013-01-14 1 views
1

내 CakePHP 앱에서 설정을 수정했습니다. 한 가지 문제를 제외하고는 매우 효과적입니다. 데이터가 데이터베이스에 성공적으로 게시되면 반환되는 값에는 입력 된 'admin.ctp'레이아웃이 포함됩니다. 나는 $this->autoRender = false$this->layout = 'ajax'과 같은 몇 가지 시도를 성공하지 못했습니다. 제발 아래에있는 내 코드 :CakePHP와 jEditable은 값만 반환 할 때 전체 레이아웃보기를 표시합니다.

jQuery를 코드

$('.setting_value').editable('/settings/ajax_edit',{ 
    id  : 'data[Setting][id]', 
    name  : 'data[Setting][value]', 
    select: true, 
    type  : 'text', 
    cancel : 'Cancel', 
    submit : 'Save', 
    tooltip : 'Click to edit the title', 
    indicator: '<img src="/img/admin/ajax-loader.gif">' 
}); 

내 컨트롤러 기능 다시

public function ajax_edit(){ 
    // $this->autoRender = false; // this doesnt seem to work 
    // $this->layout = 'ajax' // this does not work as well 

    if ($this->request->data) { 
     $this->Setting->id = $this->request->data['Setting']['id']; 
     $this->Setting->saveField('value', $this->request->data['Setting']['value']); 
     $this->set('newvalue', $this->request->data['Setting']['value']); 
    } 
} 

, 그것은 변경된 값을 반환 할 때 위대한 작품,하지만 everythingn.

답변

2

일부 시도 후에, 나는 그것을 알아낼 수있었습니다. 그래서 나는 다음과 같은 당 내 기능 업데이트 : 기본적으로

public function ajax_edit(){ 
    $this->autoRender = false; 

    if ($this->request->data) { 
     $this->Setting->id = $this->request->data['Setting']['id']; 
     $this->Setting->saveField('value', $this->request->data['Setting']['value']); 
     return $this->request->data['Setting']['value']; 
    } 
} 

을, 나는 위해서 AutoRender = 거짓을 설정하고 표시 할 뷰 파일을 사용하는 대신 새 값을 반환했다. 이제 원하는대로 작동합니다.

관련 문제