0

Iveは自分のフィルタに次の設定をしています。これはzendフレームワークのサービスマネージャーの設定に使用されます。サービスフィルタプラグインが見つかりません。Zend Framework

A plugin by the name "StripSpaces" was not found in the plugin manager Zend\Filter\FilterPluginManager 
+0

https://stackoverflow.com/questions/43702914/set-custom-filter-plugin-inside-servicemanager-config-zend-frameworkを参照してください。 –

+0

@AlainPomirolなぜサービスマネージャに追加してエイリアスを追加するだけですかすべての仕事をする代わりに?彼らは私にカスタムフィルタを追加してもらうために、同じ設定を使用したいと考えています – jkushner

+0

https://docs.zendframework.com/zend-filter/filter-chains/#using-the-plugin-managerのドキュメントに説明があります。 'FilterPluginManager'はすべての' FilterChain'インスタンスに添付されています。 'FilterChain'で使われるすべてのフィルタは、filtreプラグインマネージャに知られていなければなりません。 –

答えて

0

私の知る限りでは、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では

+0

私はそのフィルタを知っています。私は何もしなかった – jkushner

0

あなたがのようにあなたのInputFilterManagerからInputFilterクラスを取得する必要がありますあなたのInputFilter内のカスタムフィルタ/バリデータを持つようにしたい場合:

$serviceManager->get('InputFilterManager')->get(MyInputFilter::class); 

またはその代わりにFQCNの任意のエイリアスを使用し、それはあなたが登録方法に基づいていますあなたのinputFilters。

なぜ入力フィルタをマネージャから取得する必要がありますか? new MyInputFilter()のように新しいオブジェクトを作成すると、InputFilter\FactoryInputFilterManagerクラスの新しいインスタンスを作成するという事実が原因です。これはあなたの設定を含むアプリケーションInputFilterManagerではないので、デフォルトのZendフィルタ/バリデータだけです。使用するカスタムフィルタやバリデータがない場合は、これを使用しても問題ありません。アプリケーションServiceManagerへの参照を含むアプリケーションInputFilterManagerを提供することにより、

あなたinputfilterを取得するためにアプリケーションInputFilterManagerを使用し、それがupdates the factory。そして、あなたのアプリケーションServiceManagerから、フィルタとバリデータのための他のマネージャとInputFilter Factoryのupdates the chainsをフェッチします。そのため、InputFilterはカスタムフィルタ/バリデータを認識しています。

入力フィルタの設定方法を更新する必要があることに注意してください。 __construct()にフィルタ/バリデータを設定しないでください。チェインはまだ更新されていないため、カスタムフィルタ/バリデータは含まれていません。入力フィルタの設定をInputFilterManagerから呼び出されるpublic function init()に移動します。initializes InputFilterクラスです。

関連する問題