Zend Framework 2 アプリケーションに、いくつかのフィルターを含む Generic モジュールがあります。
私のエンティティでは、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をロードするために、Generic の Module.php に FilterProviderInterface を実装しました。
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 として) は、フィルタ ファクトリについてどのように認識しますか?