2011-02-23 54 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; ?> 

這個工作對我來說!