为什么我的CakePHP flash消息没有出现?

时间:2011-02-23 17:09:20

标签: cakephp http-headers cakephp-1.3 session-variables

背景:我是CakePHP的新手。我有一个小的测试网站(目前主要是静态视图和联系表格),在我学习的时候可以玩。在localhost(Ubuntu上的Apache)上一切正常,所以我将它部署到共享主机帐户(由Lunarpages提供)。我将/ cake文件夹移出了正常的目录结构(所以我可以将它用于多个应用程序)并且我相应地重新配置了我的webroot的index.php路径。

问题:

  1. setFlash消息无法显示。甚至制作一个除了$this->Session->setFlash('message');之外什么都不做的简单视图。我没有收到任何错误消息,闪存只是没有显示
  2. 重定向不起作用。例如,在联系表单完成后我想$this->redirect( array( 'action' => 'success' ), null, true);,但服务器会抛出错误:

      

    警告(2):无法修改标题信息 - 已经发送的标题(输出从/routetoapp/config/routes.php:40开始)[CORE / cake / libs / controller / controller.php,第742行]

  3. 其他所有内容似乎都像在localhost上一样工作 - URL重写,组件加载,模型验证。我不知道我的问题是相关的还是单独的问题

    到目前为止

    排查:

    1. 我为Configure::write('Session.save', 'val');尝试了'蛋糕'和'php',但两者都没有区别。
    2. 我的app / tmp文件夹是可写的。
    3. 我的布局模板具有显示Flash消息的正确代码。 (完全相同的M,V,C和Layout对象显示localhost上的预期闪存)
    4. 我认为我遗漏了一些简单的东西,但我是这个框架的新手所以我不知道还有什么要看的。

3 个答案:

答案 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; ?>

这对我有用!