背景:我是CakePHP的新手。我有一个小的测试网站(目前主要是静态视图和联系表格),在我学习的时候可以玩。在localhost(Ubuntu上的Apache)上一切正常,所以我将它部署到共享主机帐户(由Lunarpages提供)。我将/ cake文件夹移出了正常的目录结构(所以我可以将它用于多个应用程序)并且我相应地重新配置了我的webroot的index.php路径。
问题:
setFlash
消息无法显示。甚至制作一个除了$this->Session->setFlash('message');
之外什么都不做的简单视图。我没有收到任何错误消息,闪存只是没有显示重定向不起作用。例如,在联系表单完成后我想$this->redirect( array( 'action' => 'success' ), null, true);
,但服务器会抛出错误:
警告(2):无法修改标题信息 - 已经发送的标题(输出从/routetoapp/config/routes.php:40开始)[CORE / cake / libs / controller / controller.php,第742行]
其他所有内容似乎都像在localhost上一样工作 - URL重写,组件加载,模型验证。我不知道我的问题是相关的还是单独的问题
到目前为止排查:
Configure::write('Session.save', 'val');
尝试了'蛋糕'和'php',但两者都没有区别。我认为我遗漏了一些简单的东西,但我是这个框架的新手所以我不知道还有什么要看的。
答案 0 :(得分:6)
请参阅Matt Huggins回答您的闪光问题。那是对的
关于您的重定向问题,
您的routes.php
文件中可能有额外的空格或内容。确保在开始<?php
标记之前没有空格,并删除结束?>
答案 1 :(得分:1)
$this->Session->setFlash(...)
用于从控制器内设置flash消息。当您在视图中时,您应该像这样呈现Flash消息:
<?php $session->flash(); ?>
如果您需要以下内容,还可以使您的Flash消息更精细:
<?php if ($session->check('Message.flash')): ?>
<div class="message">
<?php $session->flash(); ?>
</div>
<?php endif; ?>
答案 2 :(得分:0)
这是正确的,但在echo
之前还添加$session->flash();
所以,应该是这样的:
<?php if ($session->check('Message.flash')): ?>
<div class="message">
<?php echo $session->flash(); ?>
</div> <?php endif; ?>
这对我有用!