奇怪的cakePHP布局问题(ajax)

时间:2012-02-28 11:45:54

标签: jquery ajax cakephp layout

我有这段代码:

// 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中工作)。

3 个答案:

答案 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。希望它有所帮助。