我檢查了typical CakePHP request但找不到解決方案。CakePHP控制器動作設置cookie並傳遞給幫手
起初myThemeCookie
不存在。通過設置這個cookie,用戶可以選擇他/她最喜歡的主題,他/她將在未來看到該主題。
我有myController
和myAction
。我有一個表格myAction.ctp
。用戶可以選擇主題名稱。
首先要求myAction
檢查$_POST
。它找不到任何價值。行動只顯示錶單。
在第二個請求中,當用戶提交表單時,我再次向myAction
發送用戶。行動發現$_POST
數據。從$_POST
獲取主題css地址。通過使用myComponent
,編寫了myThemeCookie
。
然後我有myLayout.ctp
文件。此佈局文件使用myHelper
並使用myHelper->getCookieTheme()
,它從Cookie獲取主題名稱。但助手給出了空的名字。所以用戶看到舊主題的字體。 (請注意,我通過在幫助程序中使用$_COOKIE
變量來檢查cookie數據)
當我刷新myAction頁面併發出第三個請求時,我看到myHelper->getCookieTheme()
給出了正確的css文件名。用戶看到新主題的字體。
所以,我在myAction中設置了一個cookie之後,在輔助方法和佈局文件中看不到它。但好像查看/幫助文件是在控制器操作之後計算的。我想念什麼?
我使用CDN的主題文件。所以我將HTML傳遞給我的佈局/幫手。可以設置$ this->主題。並訪問它內部佈局/助手? – trante
我將在派生控制器內用'''public $ theme =「mytheme」'''創建新變量,並將其設置爲AppController?我無法理解在哪裏設置''this-> theme'''? – trante
這不是一個變量,它是一個屬性。如果你在從AppController派生的控制器中設置,你將覆蓋你在AppController中設置的內容。 OOP基礎知識。既然你想(我猜是這樣)主題適用於任何地方,你將不得不做的cookie檢查和設置AppController中的主題。如果沒有將檢查放在AppController中,並將其設置在需要它的控制器中。 – burzum