Iveは自分のフィルタに次の設定をしています。これはzendフレームワークのサービスマネージャーの設定に使用されます。サービスフィルタプラグインが見つかりません。Zend Framework
A plugin by the name "StripSpaces" was not found in the plugin manager Zend\Filter\FilterPluginManager
Iveは自分のフィルタに次の設定をしています。これはzendフレームワークのサービスマネージャーの設定に使用されます。サービスフィルタプラグインが見つかりません。Zend Framework
A plugin by the name "StripSpaces" was not found in the plugin manager Zend\Filter\FilterPluginManager
私の知る限りでは、stripspacesが呼ばれるフィルタなし:このフィルタを使用して、フォームをロードするとき
フォームの使用$inputFilter->add([
'name' => 'objectclassname',
'required' => true,
'filters' => [
['name' => 'StringTrim'],
['name' => 'StripTags'],
['name' => 'StripNewlines'],
['name' => 'StripSpaces'] // here is where my StripSpaces alias is used
],
'validators' => [
[
'name' => 'StringLength',
'options' => [
'min' => 5,
'max' => 255
],
]
],
]);
については
$filters = [
'factories' => ['Administration\Filter\StripSpaces'=>'Zend\ServiceManager\Factory\InvokableFactory']
'aliases' => ['StripSpaces'=>'Administration\Filter\StripSpaces']
];
return ['filters'=>$filters];
そして、ここではエラーになりますZF3では
私はそのフィルタを知っています。私は何もしなかった – jkushner
あなたがのようにあなたのInputFilterManager
からInputFilter
クラスを取得する必要がありますあなたのInputFilter内のカスタムフィルタ/バリデータを持つようにしたい場合:
$serviceManager->get('InputFilterManager')->get(MyInputFilter::class);
またはその代わりにFQCNの任意のエイリアスを使用し、それはあなたが登録方法に基づいていますあなたのinputFilters。
なぜ入力フィルタをマネージャから取得する必要がありますか? new MyInputFilter()
のように新しいオブジェクトを作成すると、InputFilter\Factory
がInputFilterManager
クラスの新しいインスタンスを作成するという事実が原因です。これはあなたの設定を含むアプリケーションInputFilterManager
ではないので、デフォルトのZendフィルタ/バリデータだけです。使用するカスタムフィルタやバリデータがない場合は、これを使用しても問題ありません。アプリケーションServiceManager
への参照を含むアプリケーションInputFilterManager
を提供することにより、
あなたinputfilterを取得するためにアプリケーションInputFilterManager
を使用し、それがupdates the factory。そして、あなたのアプリケーションServiceManager
から、フィルタとバリデータのための他のマネージャとInputFilter Factoryのupdates the chainsをフェッチします。そのため、InputFilterはカスタムフィルタ/バリデータを認識しています。
入力フィルタの設定方法を更新する必要があることに注意してください。 __construct()
にフィルタ/バリデータを設定しないでください。チェインはまだ更新されていないため、カスタムフィルタ/バリデータは含まれていません。入力フィルタの設定をInputFilterManager
から呼び出されるpublic function init()
に移動します。initializes InputFilterクラスです。
https://stackoverflow.com/questions/43702914/set-custom-filter-plugin-inside-servicemanager-config-zend-frameworkを参照してください。 –
@AlainPomirolなぜサービスマネージャに追加してエイリアスを追加するだけですかすべての仕事をする代わりに?彼らは私にカスタムフィルタを追加してもらうために、同じ設定を使用したいと考えています – jkushner
https://docs.zendframework.com/zend-filter/filter-chains/#using-the-plugin-managerのドキュメントに説明があります。 'FilterPluginManager'はすべての' FilterChain'インスタンスに添付されています。 'FilterChain'で使われるすべてのフィルタは、filtreプラグインマネージャに知られていなければなりません。 –