2

奇妙ですが、それは本当です。私の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

myFilter:
  class: myFilter

cache:     ~
execution: ~

そしてこのフィルター:

<?php
class MyFilter extends sfFilter
{
    /**
     * @return
     */
    public function execute ($filterChain)
    {
        if ($this->isFirstCall())
        {
            if NOT LOGGED IN
            {
                $this->getContext()->getUser()->setFlash ('error', 'login again!');
                $this->getContext()->getController()->forward('glbl', 'empty');
            }
        }

        $filterChain->execute();
    }
}
?>

欲しい帽子? while サイトでは、常にログインしているユーザーが必要です。または、表示されるのはログイン ページだけです。ログインしていない場合、またはその間にログアウトした場合、URL はそのままで、ログイン ページを取得する必要があり、「空の」モジュールが表示されます (ログイン パーシャルは別の場所に表示されます)。

ただし、レイアウト全体を 2 回レンダリングします。<html>タグも重複しています。どうしたの?

4

2 に答える 2

4

追加してみてください

throw new sfStopException();

転送後:

<?php
class MyFilter extends sfFilter
{
    /**
     * @return
     */
    public function execute ($filterChain)
    {
        if ($this->isFirstCall())
        {
            if NOT LOGGED IN
            {
                $this->getContext()->getUser()->setFlash ('error', 'login again!');
                $this->getContext()->getController()->forward('glbl', 'empty');
                throw new sfStopException();
            }
        }

        $filterChain->execute();
    }
}
?>
于 2013-01-07T10:04:24.057 に答える
1

に変更->forward(してみてください->redirect(

于 2013-01-07T01:34:33.367 に答える