我有这个代码:
// controller
function contact($token) {
$this->layout = 'ajax';
}
// contact element
<some html, no php>
// contact view html + javascript
<script type=".....">
....
$.post(
$(this).attr("href"),
null,
function(data){
$(data).appendTo($(".contact_store_link").parent()).fadeIn();
}
);
</script>
<!-- the relevant html -->
<dd><a class="contact_store_link" href="/stores/contact">link title</a></dd>
问题是,无论 $this->layout = 'ajax';
指令如何,返回的布局都是 appController.beforeFilter()
函数中设置的默认布局 .
问题是,除了布局,其余代码工作得很好 . 正确的控制器动作传递参数 . 元素和视图也可以正常工作,返回的数据包含处理过的数据,只是布局错误 .
清除tmp文件夹没有帮助 . 我还验证了ajax布局是应该的(并且在另一个controller.action视图集中工作) .
?
3 回答
那么
$this->autoLayout = false;
,然后渲染你想要的布局 .CakePHP默认在
lib\View\View.php
文件中定义autoLayout = true
. 希望能帮助到你 .您是否尝试在ajax请求中调用的操作中设置
$this->layout = null;
?你可以尝试:
希望能帮助到你