function new_photo()
{
if( !empty($this->data))
{
$this->data['Photo']['showcase_id'] = $this->Session->read('CurrShowcase.id');
$this->data['Photo']['added'] = date("Y-m-d H:i:s");
$this->Showcase->Photo->save($this->data);
$flasher = 'Photo uploaded successfully';
$flasher .= '<br/><img src="' . $this->data['Photo']['thumbnail_url'] . '"/>';
$this->Session->setFlash($flasher);
//$this->redirect(array('action'=>'sc',));
}
}
我的CakePHP应用程序中有一个Showcase Controller,还有一个新的照片表单来提交新照片。每当我取消注释保存数据后重定向的最后一行时,我都会收到此错误:
Warning (2): Cannot modify header information - headers already
sent by (output started at D:\.....
即使我收到此错误,$ this-&gt;数据仍会在数据库中正确保存。但是,如果我如上所示评论重定向行,一切正常并且没有错误。 我已经检查了标签周围的空白区域,所以我很确定不是这样。
有什么想法吗?
编辑: 注释掉setFlash语句并不能解决问题。
答案 0 :(得分:3)
将调试模式更改为0,以确保在重定向之前不会生成通知/警告。此外,您可能希望收紧处理部分(变得偏执)并确保它不使用无效索引,以及整个应用程序流中的任何其他位置以确保您没有获得任何输出(如果它将调试更改为0时可以正常工作。
答案 1 :(得分:1)
在某处你没有向我们展示调试声明吗?
答案 2 :(得分:1)
你可能会遇到一个看不见的UTF-8 BOM字符。检查文本编辑器设置是否使用BOM保存文件。
答案 3 :(得分:1)
我会检查模型中的空白区域。他们中的任何人。那是我遇到的陷阱之一。
答案 4 :(得分:0)
我假设setFlash会向浏览器输出内容吗?
如果你的&lt;?php?&gt;之前或之后有空格标签不是你的问题你可能不得不尝试为setFlash()的'layout'参数传递'null';
即
$this->Session->setFlash($flasher, null);
答案 5 :(得分:0)
此代码向浏览器输出内容,或者在文件末尾(或任何其他包含文件)?>
之后有空格。空白被发送给用户,从而发送http头。