CakePHP 3和部分View通过Ajax更新 - 应该怎么做?

时间:2016-06-08 08:55:44

标签: ajax cakephp-3.0 partials

我再次遇到问题,应该在CakePHP3中完成通过ajax进行部分视图upadtes。 从我的观点来看,有3种方法可以做到这一点:

  1. 在专用控制器操作中渲染视图的所需部分,然后只需注入HTML。
  2. 为每个ajax操作创建专用模板(* .ctp)文件,像任何其他操作一样呈现它,但没有主要布局并注入HTML(变体1的类型,但具有独立的VC逻辑)。
  3. 仅将所需数据作为ajax响应(例如实体数据)返回,并从客户端的javascript构建我的视图的一部分。
  4. 我认为最有效的解决方案是变体2,因为控制器和视图逻辑分离。 变体1最有可能导致视图生成两次(按需,并在处理请求后),如下面的剪切:

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

    另一方面,Variant 3会在某些情况下将视图代码加倍 - 例如,相同的html将在ViewCell和客户端javascript中生成 处理此类功能的最佳做法是什么?

0 个答案:

没有答案