2017-01-24 6 views
0

ajax로 cakephp3 템플릿을 렌더링하고 html을로드 된 페이지에 삽입하려고합니다 (페이지를 다시로드하지 않음).CakePHP 3 및 부분 뷰 Ajax를 통한 업데이트 - 어떻게 구현해야합니까?

CakePHP 3 and partial View update via Ajax - How it should be done?, 에 따르면, 아이디어는

은, 모든 아약스 조치에 대해 파일 전용 템플릿 (* .ctp) 만들기 다른 작업을 같이하지만, 메인 레이아웃없이 렌더링해야하며 를 삽입 할 수 HTML (변형 1의 종류이지만 분리 된 VC 논리가있는 경우).

또한 부분 예제 코드를 제공합니다

public function ajaxRenderAuditDetails($id = null) 
{ 
    if ($id == null) { 
     return null; 
    } 
    if ($this->request->is("ajax")) { 
     $this->set("result", $this->viewBuilder()->build()->cell("audits", [$id])); 
    } 
} 

월 사람이 전체 예제 제안을?

답변

0

이렇게하려면 서버에서 데이터를 가져 오기 위해 Ajax 호출을 사용해야합니다. CakePhp에서는 Ajax를 사용하여 컨트롤러 기능을 호출합니다. 이 함수는 부분 뷰를 렌더링하는 ctp 파일을 호출합니다. Ajax의 성공 함수는 부분 뷰를 업데이트하거나 추가해야한다. 이 과정에 대한 완벽한 예제 코드는 여기에있다 - 통화 제어 기능에 대한

Ajax 코드 -

 $.ajax({ 
      dataType: 'json', 
      url: basepath/controllername/controllerfunction, 
      type: "POST", 
      dataType : 'html', 
      success: function (data) { 
       $(selector).html(data); 
      } 
     }); 

    public function ajaxRenderAuditDetails($id = null){ 
     $this->viewBuilder()->layout(false); 
     if ($id == null) { 
     return null; 
     } 
     if ($this->request->is("ajax")) { 
     $this->set("result", $this->viewBuilder()->build()->cell("audits", [$id])); 
    } 
    } 

가 CTP 파일에 필요한 HTML 또는 논리를 넣습니다.

이것은 실행 코드가 아닙니다. CakePhp에서 부분보기를 업데이트하는 예제입니다.