2011-02-23 53 views
1

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

问题:

  1. setFlash消息没有得到显示。即使提出一个简单的看法,除了$this->Session->setFlash('message');之外什么都不做。我没有收到任何错误消息,闪光灯不显示
  2. 重定向不起作用。举例来说,完成的联系方式后,我想$this->redirect(array('action' => 'success'), null, true);但服务器抛出一个错误:

    Warning (2): Cannot modify header information - headers already sent by (output started at /routetoapp/config/routes.php:40) [CORE/cake/libs/controller/controller.php, line 742]

一切似乎因为它没有在本地主机上以刚工作 - URL重写,组件加载,模型验证。我不知道如果我的问题,到目前为止相关的或独立的问题

故障排除:

  1. 我都试过“蛋糕”和“PHP”的Configure::write('Session.save', 'val');但也发挥了作用。
  2. 我的app/tmp文件夹是可写的。
  3. 我的布局模板具有用于显示Flash消息的正确代码。 (完全相同的M,V,C和布局对象在本地主机上显示预期的闪存)

我假设我缺少一些简单的东西,但我是新来的这个框架,所以我不确定在哪里别的去看看。

回答

6

见马特哈金斯回答你的闪光问题。这是正确的

至于你重定向问题,

你可能在你的routes.php文件的额外空间什么的。确保有开始<?php标记之前没有空格,并删除收盘?>

+0

谢谢! ''>'后面有一个空格,我可能不会在50年的时间里看到这个文件。我现在赞成你,因为这很有帮助。我单独回复了马特的消息,但可能会重新打开一个单独的问题,以便我可以接受你的答案。 – Farray 2011-02-23 17:30:26

+0

Waddya'知道......在'?>'之后删除空格也解决了'setFlash'问题。我对PHP会话和头文件不够了解,因此很明白为什么,但它确实有效。 – Farray 2011-02-23 17:33:52

+2

不用担心!在PHP专用文件中忽略关闭'?>'标签总是一个好习惯,以避免这个问题。 – JohnP 2011-02-23 18:34:41

1

$this->Session->setFlash(...)用于设置控制器内的闪光消息。当您在视图中的时候,你应该渲染闪光灯的消息是这样的:

<?php $session->flash(); ?> 

您也可以让你的flash消息更详细的,如果你需要的东西是这样的:

<?php if ($session->check('Message.flash')): ?> 
    <div class="message"> 
     <?php $session->flash(); ?> 
    </div> 
<?php endif; ?> 
+0

谢谢,但我有'$ this-> Session-> flash();'在我的/views/layouts/default.ctp模板中,它不显示'$ this-> Session-> setFlash设置的消息(...)'。 – Farray 2011-02-23 17:20:21

0

这是正确的但也有echo之前$session->flash(); 这么加,应该是这样的:

<?php if ($session->check('Message.flash')): ?> 
    <div class="message"> 
     <?php echo $session->flash(); ?> 
    </div> <?php endif; ?> 

这个工作对我来说!