我有这段代码:
// 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 + view set中工作)。
答案 0 :(得分:3)
你可以尝试:
function contact($token) {
$this->layout = 'ajax';
$this->render("ajax_view_name", FALSE);
}
希望有所帮助
答案 1 :(得分:0)
您是否尝试在ajax请求中调用的操作中设置$this->layout = null;
?
答案 2 :(得分:0)
如何$this->autoLayout = false;
,然后呈现您想要的布局。
CakePHP默认在autoLayout = true
文件中定义lib\View\View.php
。希望它有所帮助。