coquille 2011-08-16 10:00:17 4146次浏览 4条回复 0 0 0

例如,在J2EE里面,可以设定一个Filter针对某个Servlet,或者针对所有的servlet(使用通配符)。 在Yii中可以设定类似的Filter么?

Yii的官方手册对Filter的介绍很少,提到了Filter可以作为Controller的一个函数或者一个独立的被Controller调用的类存在。 也就是说,Filter和Controller的关系,必须一一设定,某个Filter要在某个Controller,必须通过编码设定。 看不出来能像J2EE那样通过配置文件(filter和filter-mapping段)设定。

Yii能比较简便地实现类似的功能么?

  • 回复于 2011-08-16 10:26 举报

    如果你想设置全局的filter,可以在Controller基础类里写。

  • 回复于 2011-08-16 10:43 举报

    恩 是的可以写在componts/controller里 然后对你要的动作进行过滤一下就行了

  • 回复于 2011-08-16 10:45 举报

    楼主是想方便的配置filter吧?

    Yii里面的filter也能方便配置的啊,如:

    public function filters()
    {
      return array(
        'accessControl', // perform access control for CRUD operations
        'PostComment + create index admin'
      );
    }
    

    这个是落叶的代码,PostComment这个filter是检查post是否存在的,

  • 回复于 2011-08-16 10:52 举报

    多谢大家的帮助。:)
    目前我是写在componts/controller里,只是这样也存在一个问题,当controller的子类覆盖了父类的filters函数,那么还是要在子类里面加入一段处理,例如yii api文档里面所说的:Note, in order to inherit filters defined in the parent class, a child class needs to merge the parent filters with child filters using functions like array_merge().

    public function filters()
    {
      return array_merge(parent::filters(), array(
        'accessControl',
      ));
    }
    
您需要登录后才可以回复。登录 | 立即注册