prod環境でフラッシュ法を使用することはできません
-
20-09-2019 - |
質問
私はWAMP 2.0とsymfonyの1.4のsetFlashとhasFlashメソッドを使用しています。
ローカル私のfrontend_devアプリ、すべての作業罰金と。
しかし、本番環境では、私のテスト$this->forward404Unless($user->hasFlash('resultsArray'));
は失敗します。
私は、デフォルトで有効にフラッシュメソッドと思いました。私はそれをしてください作品にするために何ができる?
編集:私は面白いのエラーメッセージを見つけました。
。ここに私のfilters.ymlファイルがある
# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/12-Filters
rendering: ~
security: ~
# insert your own filters here
cache: ~
flash: ~
execution: ~
frontend_prod.logでは、私が持っています:
3月16日5時57分42秒のsymfony [INFO] {sfPatternRouting}パラメーター配列と一致ルートの "ホームページ"(/)/( 'モジュール' => 'メイン'、 '作用' => 'インデックス')
3月16日五時57分42秒のsymfony [ERR] {} sfParseException設定ファイル "D:\ WAMPビン\ phpの\ \ symfonyの\ symfony14 \ libに/設定/設定/ filteres.ymlの" 欠落しているクラスキーでカテゴリ "フラッシュ" を指定します。
解決
あなたはリダイレクト/前方文脈では、のexecuteShowResult のアクションを呼び出しますか?フラッシュは、限られた寿命を持っており、それは非常に次のリクエストの後に消えます。明らかにのresultsArray は追い出されています。
他のヒント
あなたは404が生産(ファビコンまたは画像)で生成されている必要があり、それはあなたのフラッシュ変数をクリアする(リダイレクト後の)404アクションへの要求として数えます。
flash
キーを持っていない、と私はsymfonyのサイトからバージョンをつかんので、それに触れていない場合は、わかりません。あなたのキャッシュをクリアして、もう一度試みて、YMLファイルからその行を削除しようとしたことがありますか?
あなたはキャッシュがPRODのために有効にした場合、私は疑問に思いますか?
あなたは、とwith_layoutをキャッシュ(またはフラッシュアクションテンプレートである場合、関連するアクションをキャッシュ)している場合は、、それはそれ以降のビュー上のフラッシュメッセージを表示せずにキャッシュされたページを返します。
あなたはuse_flash=true
にfactories.yml
を持っていることを確認してください。
user:
class: myUser
param:
timeout: 3600
logging: %SF_LOGGING_ENABLED%
use_flash: true
default_culture: %SF_DEFAULT_CULTURE%
かなり古い応答が、私は同じ問題で誰にいくつかの使用であると思います。
@Lunohodov
(代わりにコメントの答えを投稿して申し訳ありませんが、私は文字制限のこのような原因を使用することはできません)
ここではアクションです。
public function executeShowResult()
{
$user = $this->getUser();
$this->forward404Unless($user->hasFlash('resultsArray'));
$this->results = $user->getFlash('resultsArray');
$user->setFlash('resultsArray', $this->results);
$this->pager = new myArrayPager(null, 15);
$this->pager->setResultArray($this->results);
$this->pager->setPage($this->getRequestParameter('page'));
$this->pager->init();
$this->myModule = $this->getRequestParameter('myModule');
$this->myTemplate = $this->getRequestParameter('myTemplate');
$forwardPage = '../../'.$this->getRequestParameter('myModule').'/templates/'.$this->getRequestParameter('myTemplate');
$this->setTemplate($forwardPage);
return sfView::SUCCESS;
}
<時間>
編集:もう一つの興味深いログ。フラッシュを設定し、私のアクションでは、私はセットとhasFlashメソッドをテストするために、ログを入れてきた...それが働いた:
$user = $this->getUser();
$user->setFlash('resultsArray', $this->results);
if ($user->hasFlash('resultsArray'))
{
sfContext::getInstance()->getLogger()->info("The flash is set");
}
else
{
sfContext::getInstance()->getLogger()->info("The flash is NOT set");
}
そのため、ログます:
3月16日6時07分13秒symfonyの[情報]フラッシュが設定されている。
私はここに大きな何かが欠けていると思う...