我有一个模型类女巫基本上是带有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()方法将对象绑定到我的表单,但我不需要它在最终数组中(在提取时被排除)。
public function getFilter()
{
return new MethodMatchFilter('getTransferFields');
}
这种方法完全符合我的要求,但仅适用于1种方法。我无法找到如何过滤多个方法。有谁知道如何实现这一目标?
答案 0 :(得分:0)
只需返回FilterComposite
个对象即可。 FilterComposite实现FilterInterface,其处理方式与MethodMatchFilter
相同。
例如:
public function getFilter()
{
$myFilters = new FilterComposite();
$myFilters->addFilter('someParam', new MethodMatchFilter('getSomeParam'));
$myFilters->addFilter('someOtherParam', new MethodMatchFilter('getSomeOtherParam'));
return $myFilters;
}