2017-01-24 3 views
0

ajaxでcakephp3テンプレートをレンダリングし、読み込んだページにhtmlを挿入したい(ページをリロードせずに)。 CakePHP 3 and partial View update via Ajax - How it should be done?によるとCakePHP 3および部分的なAjax経由のアップデートの表示 - どのように実装する必要がありますか?

、 アイデアは

は、すべてのAJAXアクションのためにファイルを他のアクションのようなが、主なレイアウトなし にそれをレンダリングし、 を注入し、専用のテンプレート(* .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の部分表示を更新するサンプルの例です。