我的 Zend Framework 2 应用程序中有一个通用模块,其中包含一些过滤器。
对于我的实体,我创建了一个带有InputFilterAwareInterface的过滤器类:
public function getInputFilter()
{
if (!$this->inputFilter) {
$inputFilter = new InputFilter();
$factory = new InputFactory();
$inputFilter->add(
$factory->createInput(
array(
'name' => 'desc',
'required' => false,
'filters' => array(
array('name' => 'myfilter'),
),
)
)
);
$this->inputFilter = $inputFilter;
}
return $this->inputFilter;
}
为了加载myfilter ,我使用FilterProviderInterface实现了 Generic 的 Module.php :
public function getFilterConfig()
{
// Breakpoint at next line
return array(
'factories' => array(
'myfilter' => function($sl) {
$myfilter = $sl->getServiceLocator()->get('myfilterfactory');
return new Filter\Filter\MyFilter($myfilter);
},
),
);
}
当我运行应用程序时,会引发异常:
Zend\ServiceManager\Exception\ServiceNotFoundException
Zend\Filter\FilterPluginManager::get was unable to fetch or create an instance for myfilter
我运行调试器并意识到从未调用过getFilterConfig()方法,因为没有触发断点。
我需要在我的代码中插入什么来加载过滤器配置?
编辑:
代码已执行,但调试器不会在断点处停止。当我插入一条附加语句并将断点设置为此时,执行停止。
在控制器中,我执行以下操作
$serviceManager = $this->getServiceLocator();
$filterManager = $serviceManager->get('FilterManager');
在过滤器管理器中,我在工厂数组中有myfilter 。但我仍然得到例外。
Zend\InputFilter\Factory(作为 InputFactory)如何知道过滤器工厂?