我想通过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]));
}
}
愿任何人提出一个完整的例子吗?
答案 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中部分视图的示例。