CakePHP页面没有页眉/页脚

时间:2011-04-03 04:14:33

标签: cakephp download blob

在数据库blob的下载页面中,如何进行以下操作以便不发送其他输出?现在它正在发送标题,调试信息和页脚。我如何制作它以便不会发送任何内容,仅用于该视图?

3 个答案:

答案 0 :(得分:5)

您可以在layouts文件夹中创建一个清晰的布局(例如empty.ctp),只能使用

<?php echo $content_for_layout ?>

然后在你获取blob数据的行动中使用该布局

$this->layout = 'empty.ctp';

并且还要禁用调试,在控制器中使用

Configure::write('debug',0);

如果您无法创建新的布局,可以试试这个。

$this->layout = null;
$this->render("view_name");

答案 1 :(得分:5)

如果您使用此文件下载文件,则应使用cakePHP中的Media视图

http://book.cakephp.org/view/1094/Media-Views

    $this->view = 'Media';
    $params = array(
          'id' => 'example.zip',
          'name' => 'example',
          'download' => true,
          'extension' => 'zip',  // must be lower case
          'path' => APP . 'files' . DS   // don't forget terminal 'DS'
   );

答案 2 :(得分:0)

CakePhp 2.3用户:

CakePhp 2.x用户:

  • 使用'$ this-&gt; viewClass'代替'$ this-&gt; view'

在任何控制器文件中复制粘贴就绪完整解决方案:

<?php

public function download($file) {

    $fsTarget = APP.WEBROOT_DIR.DS.'files'.DS.$file; // files located in 'files' folder under webroot
    if (false == file_exists($fsTarget)){
            throw new NotFoundException(__('Invalid file'));
    }

    $pathinfo = pathinfo($fsTarget);

    $this->viewClass = 'Media';

    $params = array(
          'id' => $file,
          'name' => $pathinfo['filename'], // without extension
          'download' => true,
          'extension' => $pathinfo['extension'],  // must be lower case
          'path' => dirname($fsTarget) . DS // don't forget terminal 'DS'
   );
   $this->set($params);
}

希望这有帮助!