2009-11-10 31 views
4

我在正在工作的網站出現了一些問題,直到我在CakePHP中實現了完整頁面緩存。當緩存頁面時Cakephp沒有正確重定向

我按照手冊中的指導,並在無緩存塊我的$會話級>閃光燈像這樣:

<cake:nocache> 
    <? 
    if($session->check('Message.flash')){ 
     $session->flash(); 
    } 
    ?> 
</cake:nocache> 

然而,每當控制器設置閃光燈消息,並重定向到一個緩存頁面加載到該標籤,然後網頁給出了錯誤:

Notice (8): Trying to get property of non-object 
[CORE/cake/libs/view/helpers/session.php, line 145] 

Fatal error: Call to undefined method stdClass::renderLayout() in 
/home/decipherd/domains/example.com/public_html/beta/cake/libs/view/helpers/session.php 
on line 14 

如果我再轉到另一個控制器顯示正確的(延遲)消息並正確加載頁面創建的頁面。

現在我已經提交了這CakePHP的TRAC爲ticket 282

+0

也只是爲了確定,你使用的是什麼版本的蛋糕? – jimiyash

+0

版本是1.2.3.8166 – Tom

+0

如果可能的話,您可以考慮升級到1.2.5穩定版,Core已經做了很多更改。 –

回答

1

聽起來像它可能是與核心的問題,你有沒有試過submitting a bug report

+0

它現在在這裏提交:http://code.cakephp.org/tickets/view/282 – Tom

+0

縱觀SessionHelper的核心代碼,看起來這不是視圖中不存在的$ session對象的問題,但是在調用$ session-> flash()時,具有'view'鍵的對象無法從ClassRegistry中檢索。當您打開緩存時,Cake可能具有不會創建「視圖」對象的代碼,這會導致您看到的問題。您可能需要提交錯誤報告,或者手動顯示$ session-> read('Message.flash.message')的內容; –

+0

因爲我不能等待bug報告被修復,所以我會在手動顯示內容之前給予回覆,謝謝 – Tom

1

您確定閃信中有內容嗎?嘗試:

debug($session->read()); 

,或者輸出到的debug.log

$this->log($session->read(), LOG_DEBUG); // this might not work in the view? 
1

望着錯誤消息,似乎是SessionHelper不適用於某些原因。

我不確定爲什麼,通常在應用程序中使用AuthComponent或SessionComponent時自動加載此幫助程序。

只是一個猜測,但它可能是值得把$helpers = array('Session', ...);在你的問題控制器或AppController的好措施。

您可以檢查可用的一切,你的看法與debug($this);

最後,我想借此馬特的建議並升級到最新的穩定版本反正。

+0

我已升級到最新的穩定版,並將'Session'添加到helpers數組中。看起來好像SessionHelper已經正確加載,雖然發生了同樣的錯誤。 – Tom

相關問題