开发者

CakePHP page with no headers/footers

In a download page for a blob开发者_如何学Go from a database, how would I make it so that no other output is sent? Right now it's sending the header, debug info, and a footer. How do I make it so that none of that is sent, just for that view?


you can create an clear layout (e.g. empty.ctp ) in you layouts folder, only with

<?php echo $content_for_layout ?>

and then in you action where you're getting your blob data use that layout

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

and also to disable debugging, in your controllers use

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

if you're unable to create new layout you could try this.

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


If you're using this to download files, you should use the Media view in cakePHP

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 users :

  • use Sending files from the Book

CakePhp 2.x users :

  • use '$this->viewClass' instead of '$this->view'

copy-paste ready full solution, right in any controller file:

<?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);
}

Hope this helps!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜