在Symfony 1.4中的每个操作后执行代码

时间:2011-11-22 13:13:37

标签: php symfony1

我知道我们可以在Symfony中的每个操作之前使用过滤器来创建代码,但是在每个操作完成之后呢?一个PostExecute方法?

3 个答案:

答案 0 :(得分:10)

您也可以在执行后使用过滤器执行代码:

class myFilter extends sfFilter {

    public function execute($filterChain) {

        // Code that is executed before the action is executed

        $filterChain->execute();

        // Code that is executed after the action has been executed

    }

}

这是因为Symfony中的完整执行是一个很大的“过滤器链”......如果仔细观察filters.yml,你会看到首先调用rendering过滤器,然后security过滤器,cache过滤器,最后是execution过滤器。 执行过滤器是实际执行请求的过滤器(调用控制器和所有内容)。

为了说明这一点:缓存过滤器在下行之前,检查缓存中是否有可用的有效输出,然后返回。如果现在它将执行链中的下一个过滤器,并且当它返回时,存储输出,以便后续请求可以使用缓存。

答案 1 :(得分:2)

您必须在操作类中添加此方法:

  public function postExecute()
  {
    // do something
  }

答案 2 :(得分:1)

postExecute方法在每个动作调用结束时执行 这是documentation