首页 文章

奇怪的cakePHP布局问题(ajax)

提问于
浏览
1

我有这个代码:

// 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 回答

  • 3

    那么 $this->autoLayout = false; ,然后渲染你想要的布局 .

    CakePHP默认在 lib\View\View.php 文件中定义 autoLayout = true . 希望能帮助到你 .

  • 0

    您是否尝试在ajax请求中调用的操作中设置 $this->layout = null;

  • 0

    你可以尝试:

    function contact($token) {
      $this->layout = 'ajax';
      $this->render("ajax_view_name", FALSE);
    }
    

    希望能帮助到你

相关问题