ZF2使用FilterProviderInterface来筛选类方法

ZF2使用FilterProviderInterface来筛选类方法,filter,zend-framework2,class-method,Filter,Zend Framework2,Class Method,我有一个模型类,它基本上是数据库表中带有getter和setter的字段 class RealEstate extends BaseModel implements FilterProviderInterface { public $cityId; public $stateId; ... public $transferFields = array(); public function getFilter() { ret

我有一个模型类,它基本上是数据库表中带有getter和setter的字段

class RealEstate extends BaseModel implements FilterProviderInterface
{    
    public $cityId;
    public $stateId;
    ...
    public $transferFields = array();

    public function getFilter()
    {
        return new MethodMatchFilter('getTransferFields');
    }

    public function setTransferFields($transferFields)
    {
        $this->transferFields = $transferFields;
    }

    public function getTransferFields()
    {
        return $this->transferFields;
    }
    ...
}
在我的BaseTableGateway类中,我有一个方法save,它接受这个模型对象,并使用get方法将数据提取到数组中

    $hydrator = new ClassMethods(false);
    $model_data = $hydrator->extract($model);
我需要getTransferFields()方法将对象绑定到我的表单,但我不需要它位于最终数组中(提取时被排除)


此方法完全符合我的要求,但仅适用于1个方法。我无法找到如何筛选多个方法。有人知道这是如何实现的吗?

只需返回一个
FilterComposite
对象。FilterComposite实现FilterInterface,其处理方式与
MethodMatchFilter
相同

例如:

    public function getFilter()
    {
         $myFilters = new FilterComposite();
         $myFilters->addFilter('someParam', new MethodMatchFilter('getSomeParam'));
         $myFilters->addFilter('someOtherParam', new MethodMatchFilter('getSomeOtherParam'));
         return $myFilters;
    }
    public function getFilter()
    {
         $myFilters = new FilterComposite();
         $myFilters->addFilter('someParam', new MethodMatchFilter('getSomeParam'));
         $myFilters->addFilter('someOtherParam', new MethodMatchFilter('getSomeOtherParam'));
         return $myFilters;
    }