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 plugin manager에게 알려 져야합니다. –

답변

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

/당신의 InputFilter 내 유효성 검사기는 당신이로 InputFilterManager에서 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 클래스입니다.