包 | system.web.filters |
---|---|
继承 | class CInlineFilter » CFilter » CComponent |
实现 | IFilter |
源自 | 1.0 |
版本 | $Id: CInlineFilter.php 3026 2011-03-06 10:41:56Z haertl.mike $ |
源码 |
CInlineFilter代表作为控制器的方法定义一个过滤器。
CInlineFilter运行那些在控制器中以’filterXYZ($action)‘这样形式定义, 名字‘XYZ’可以从name属性中读取。
CInlineFilter运行那些在控制器中以’filterXYZ($action)‘这样形式定义, 名字‘XYZ’可以从name属性中读取。
公共属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
name | string | 过滤器名字。‘XYZ’代表着‘filterXYZ’过滤方法。 | CInlineFilter |
公共方法
受保护方法
方法 | 描述 | 定义在 |
---|---|---|
postFilter() | 执行post操作过滤器。 | CFilter |
preFilter() | 执行预操作过滤器。 | CFilter |
属性详细
name
属性
public string $name;
过滤器名字。‘XYZ’代表着‘filterXYZ’过滤方法。
方法详细
create()
方法
public static CInlineFilter create(CController $controller, string $filterName)
| ||
$controller | CController | 过滤方法的宿主控制器。 |
$filterName | string | 过滤器名字。 |
{return} | CInlineFilter | 实例化的对象。 |
public static function create($controller,$filterName)
{
if(method_exists($controller,'filter'.$filterName))
{
$filter=new CInlineFilter;
$filter->name=$filterName;
return $filter;
}
else
throw new CException(Yii::t('yii','Filter "{filter}" is invalid. Controller "{class}" does not have the filter method "filter{filter}".',
array('{filter}'=>$filterName, '{class}'=>get_class($controller))));
}
创建一个内嵌的过滤器实例。 这个创建是基于过滤器是否会应用内嵌的 方法名字描述和动作名字来定的。
filter()
方法
public void filter(CFilterChain $filterChain)
| ||
$filterChain | CFilterChain | 透过过滤器已启动。 |
public function filter($filterChain)
{
$method='filter'.$this->name;
$filterChain->controller->$method($filterChain);
}
执行过滤。 这个方法调用定义在控制器里面的过滤方法的。