【问题标题】:Only render specified view - CakePHP只渲染指定的视图 - CakePHP
【发布时间】:2011-07-13 01:43:21
【问题描述】:

我想自己渲染视图,我想避免渲染<head>和default.ctp文件中定义的其他部分。

我有想要在元素中呈现的信息:

<?php

echo $post['Post']['id'];

?>

我怎样才能做到这一点?它用于 ajax 响应。

谢谢!

【问题讨论】:

    标签: php ajax model-view-controller cakephp


    【解决方案1】:

    您可以创建一个新布局(例如 /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

    【讨论】:

      【解决方案2】:

      只需创建一个名为 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);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2014-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-11
        • 1970-01-01
        相关资源
        最近更新 更多