CakePHP 3和部分View通过Ajax更新 - 如何实现?

时间:2017-01-24 02:57:18

标签: ajax partials cakephp-3.x

我想通过ajax呈现cakephp3模板并将html注入加载的页面(不重新加载页面)。

根据 CakePHP 3 and partial View update via Ajax - How it should be done?, 这个想法可以是

  

为每个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]));
    }
}

愿任何人提出一个完整的例子吗?

1 个答案:

答案 0 :(得分: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]));
     }
  }

将您需要的html或逻辑放在ctp文件中。

这不是正在运行的代码。这是更新CakePhp中部分视图的示例。