質問

私は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アクションへの要求として数えます。

これが答えですが、私はsymfonyの1.4.3アプリで、私のfilters.ymlファイルでflashキーを持っていない、と私はsymfonyのサイトからバージョンをつかんので、それに触れていない場合は、

わかりません。あなたのキャッシュをクリアして、もう一度試みて、YMLファイルからその行を削除しようとしたことがありますか?

あなたはキャッシュがPRODのために有効にした場合、私は疑問に思いますか?

あなたは、とwith_layoutをキャッシュ(またはフラッシュアクションテンプレートである場合、関連するアクションをキャッシュ)している場合は、

、それはそれ以降のビュー上のフラッシュメッセージを表示せずにキャッシュされたページを返します。

あなたはuse_flash=truefactories.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の[情報]フラッシュが設定されている。

私はここに大きな何かが欠けていると思う...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top