【发布时间】:2011-07-13 01:43:21
【问题描述】:
我想自己渲染视图,我想避免渲染<head>和default.ctp文件中定义的其他部分。
我有想要在元素中呈现的信息:
<?php
echo $post['Post']['id'];
?>
我怎样才能做到这一点?它用于 ajax 响应。
谢谢!
【问题讨论】:
标签: php ajax model-view-controller cakephp
我想自己渲染视图,我想避免渲染<head>和default.ctp文件中定义的其他部分。
我有想要在元素中呈现的信息:
<?php
echo $post['Post']['id'];
?>
我怎样才能做到这一点?它用于 ajax 响应。
谢谢!
【问题讨论】:
标签: php ajax model-view-controller cakephp
您可以创建一个新布局(例如 /app/views/layouts/ajax.ctp),其中包含:
<?php echo $content_for_layout ?>
然后在您的控制器中,在您正在使用的操作中,定义布局:
function myaction() {
$this->layout = 'ajax';
}
参考:http://book.cakephp.org/view/962/Page-related-Attribute-layout
【讨论】:
只需创建一个名为 ajax.ctp 的布局,其中仅包含
<?php
echo $content_for_layout;
然后在控制器中放
$this->layout = 'ajax';
如果您想以编程方式对所有 AJAX 请求执行此操作,只需将 RequestHandler 组件添加到您的控制器
var $components = array('RequestHandler'); //and possibly others
并创建一个beforeRender 方法,如
function beforeRender() {
if ($this->RequestHandler->isAjax()) {
$this->layout = 'ajax';
Configure::write('debug', 0);
}
}
【讨论】: