没有页眉/页脚的蛋糕PHP页面



在数据库中 blob 的下载页面中,如何使其不发送其他输出?现在,它正在发送页眉、调试信息和页脚。我如何使这些都不发送,只是为了那个视图?

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

<?php echo $content_for_layout ?>

然后在获取 Blob 数据的操作中使用该布局

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

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

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

如果您无法创建新布局,可以尝试此操作。

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

如果你使用它来下载文件,你应该在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'
   );

CakePhp 2.3 用户:

  • 使用从图书发送文件

蛋糕Php 2.x用户:

  • 使用"$this->viewClass"而不是"$this->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);
}

希望这有帮助!

相关内容

  • 没有找到相关文章

最新更新