0

典型的な CakePHP リクエストを確認しましたが、解決策が見つかりませんでした。

そもそもmyThemeCookie存在しない。この Cookie を設定することにより、ユーザーは自分の好きなテーマを選択することができ、将来そのテーマを見ることができます。

と がmyControllerありmyActionます。にフォームがありmyAction.ctpます。ユーザーはテーマ名を選択できます。

最初のリクエストmyActionでは、 がチェックされ$_POSTます。値を見つけることができません。アクションはフォームのみを示します。

2 番目の要求では、ユーザーがフォームを送信すると、ユーザーをmyAction再度送信します。アクションは$_POSTデータを検索します。からテーマの CSS アドレスを取得し$_POSTます。を使ってmyComponentmyThemeCookieと書かれています。

それから私はmyLayout.ctpファイルを持っています。このレイアウト ファイルはmyHelperand を使用してmyHelper->getCookieTheme()、Cookie からテーマ名を取得します。ただし、ヘルパーは空の名前を付けます。そのため、ユーザーには古いテーマのフォントが表示されます。$_COOKIE(ヘルパーで変数を使用して Cookie データをチェックしていることに注意してください)

myAction ページを更新して 3 番目のリクエストを行うと、 myHelper->getCookieTheme()適切な css ファイル名が表示されます。ユーザーには新しいテーマのフォントが表示されます。

そのため、myAction で Cookie を設定した後、ヘルパー メソッドとレイアウト ファイルでそれを見ることができません。しかし、コントローラーのアクションの後にビュー/ヘルパーファイルが計算されるようです。私は何かが恋しいですか?

4

1 に答える 1

0

ビューでそれを行う必要はまったくありません。また、$_POST に直接アクセスせず、コントローラでリクエスト オブジェクト $this->request を使用します。

AppController に checkThemeFromCookie() のようなメソッドを用意して beforeRender() で呼び出し、Cookie からテーマを読み取ります。値が空でない場合は、単純に $this->theme = $themeFromCookie を実行します。Cookie が空の場合は、プロパティをそのままにするか、必要なデフォルトのテーマを設定してください。

参考文献

于 2013-09-16T13:37:33.640 に答える