Zf2

2013-05-17 12 views
9

पर निम्नलिखित इनपुट इनपुट फ़िल्टर बनाने के लिए InputFilterManager का उपयोग कैसे करें;Zf2

इनपुटफिल्टर मैनेजर, ज़ेंड \ Mvc \ Service \ InputFilterManagerFactory पर मैपिंग। यह बनाता है और ज़ेंड \ InputFilter \ InputFilterPluginManager का एक उदाहरण देता है, जो इनपुट फ़िल्टर उदाहरणों को प्रबंधित और बनाए रखने के लिए उपयोग किया जा सकता है।

मैं एक कस्टम zf2 inputfilter वर्ग है और मैं फिल्टर और init अंदर प्रमाणकों जोड़ रहा() निम्नलिखित की तरह विधि;

namespace Application\Filter; 
use Zend\InputFilter\InputFilter; 

class GlassFilter extends InputFilter 
{ 
    public function init() 
    { 
     $this->add(array(
       'name' => 'glassname', 
       'required' => true, 
       'filters' => array(
        array('name' => 'StringToUpper'), 
       ), 
       'validators' => array(
        array('name' => 'StringLength', 'options' => array('min' => 3), 
       ), 
     )); 
} 

इसके अलावा मैं अपने module.config.php

'filters' => array(
    'invokables' => array(
     'glassfilter' => '\Application\Filter\GlassFilter', 
    ), 
), 

मेरा प्रश्न है के लिए निम्न कुंजी कहा, मैं कैसे InputFilterManager उपयोग करते हुए मेरे GlassFilter निर्माण कर सकते हैं? क्या यह एक सही दृष्टिकोण है? मुझे this thread मिला लेकिन मैं कस्टम इनपुट फ़िल्टर और इनपुटफिल्टर मैनेजर के बीच संबंध समझना चाहता हूं।

+0

अगर im गलत नहीं है, जब तक आप इसे रजिस्टर के रूप में, यह 'सरणी ('नाम' के रूप में सरल होना चाहिए = > 'glassfilter') '' filter''-key – Sam

उत्तर

29

ठीक है, 3 खूनी घंटे खर्च करने के बाद (अविश्वसनीय (!) दस्तावेज के लिए धन्यवाद) मैंने इसे समझ लिया। मैं अपना समाधान एक उत्तर के रूप में लिख रहा हूं, उम्मीद है कि यह उन लोगों की मदद करेगा जो अपने कस्टम इनपुट फ़िल्टर लिखना चाहते हैं।

  1. आप input_filters शीर्ष कुंजी, फ़िल्टर नहीं, फिल्टर, filter_manger, filtermanager आदि द्वारा module.config.php में अपने कस्टम inputfilter पंजीकरण करना होगा .. जब अपनी खुद की GlassFilter लेखन
  2. डिफ़ॉल्ट Zend\InputFilter\InputFilter बढ़ाएँ।
  3. GlassFilter की विधि के अंदर अपने फ़िल्टर लिखें, __constructor() में नहीं। निर्माण के बाद इसे स्वचालित रूप से बुलाया जाएगा।
  4. फिर इसे inputfiltermanager के माध्यम से कहीं भी प्राप्त करें, servicemanager सीधे नहीं।

कॉन्फ़िग उदाहरण:

'input_filters' => array(
    'invokables' => array(
     'glassfilter' => '\Application\Filter\GlassFilter', 
    ), 
), 

प्रयोग उदाहरण:

$glassfilter = $serviceLocator->get('InputFilterManager')->get('glassfilter'); 
+2

+1 के तहत ''4' के लिए धन्यवाद! '1' के लिए आप वैकल्पिक रूप से 'Zend \ ModuleManager \ Feature \ FilterProviderInterface' /' getFilterConfig() '' Module.php' में भी उपयोग कर सकते हैं। – AlexP

+0

विस्तार स्पष्टीकरण के लिए धन्यवाद। मेरे मामले में 'init()' फ़ंक्शन ट्रिगर नहीं किया जा रहा था। यह काम करता है। – kabirbaidhya