जिनपूत के लिए फिल्टर कैसे बनाये?


9

मैं JInput Documentation से गुज़रा हूँ

हम इस तरह JInput ऑब्जेक्ट का उपयोग कर सकते हैं:

JFactory::getApplication()->input;

यदि हम अधिक मूल्यों को प्राप्त कर रहे हैं, तो JInput ऑब्जेक्ट को एक चर में स्टोर करना उपयोगी होगा, इसलिए हमें JFactory::getApplication()हर बार कॉल करने की आवश्यकता नहीं है जो हम कर रहे हैं:

$jinput = JFactory::getApplication()->input;

JInput से एक मान प्राप्त करने के लिए हमें इसकी विधि प्राप्त करने की आवश्यकता है:

$data = $jinput->get('varname', 'default_value', 'filter');

जैसा कि आप देख सकते हैं, इसके 3 पैरामीटर हैं:

  1. चर नाम
  2. डिफ़ॉल्ट मान (अशक्त करने के लिए चूक)
  3. फ़िल्टर नाम (cmd में चूक)

और यहां 3 पैरामीटर के संबंध में मेरा प्रश्न आता है।

मैं अपना फ़िल्टर कैसे बना सकता हूं Jinput? उदाहरण के लिए अगर मुझे फोन नंबर या आईपी पते को मान्य करना है तो मैं उसके लिए अपना फ़िल्टर कैसे बना सकता हूं?


1
यह मेरे लिए 'वर्ष का प्रश्न' है ... + 1
Lodder

मुझे भी, +1 - पहले से ही उस अनुकूलन योग्य फ़िल्टर के बारे में पूछा गया था
टॉम कुशेल 16

जवाबों:


2

यह काफी सरल है

इसके पहले में एक कस्टम जिनपूत वर्ग बनाएं जैसे कि class JinputTelephone// आप क्या चाहते हैं।

शायद, मौजूदा inputfilter कक्षाओं में / पुस्तकालयों / जूमला / इनपुट के तहत एक नज़र है

// गेट्टर और फ़िल्टरमैथ को संशोधित करें जैसा आप चाहते हैं

/**
 * Gets a value from the input data.
 *
 * @param   string  $name     Name of the value to get.
 * @param   mixed   $default  Default value to return if variable does not exist.
 * @param   string  $filter   Filter to apply to the value.
 *
 * @return  mixed  The filtered input value.
 *
 * @since   11.1
 */
public function get($name, $default = null, $filter = 'cmd')
{
    if('phonyfilter'=== $filter){ 
    // here we ca got with static filter classes like for formvalidation  or 
    }        
    elseif (isset($this->data[$name]))
    {
        return $this->filter->clean($this->data[$name], $filter);
    }

    return $default;
}

// उपयोग

$phoneInput = new JinputTelephone();
$phoneInput->get('anPhoneNumber','0040','phonyfilter');

// इस विधि के साथ आप नियमित इनपुट हैंडलिंग का भी उपयोग कर सकते हैं // लेकिन आप इसे JApplication इनपुट के साथ उपयोग नहीं कर सकते

ऐसा करने के कई अन्य तरीके हैं जो एक और समाधान $ डेटा = MyFilter :: SanitizeNumber ($ jinput-> get ('varname', 'default_value', 'raw'));

क्या यह आपकी मदद करता है?


1

मेरी कोशिश,

मुझे लगता है कि आप जूमला के साथ कुछ अनुभव है तो मैं बस अपने कुछ सेंट डाल देंगे।

  1. आपको सिस्टम प्लगइन बनाने की आवश्यकता है
  2. आपको init या समान के बाद एक विधि बनाने की आवश्यकता है।
  3. अब आपको पहल करने की जरूरत है JLoaderअगर मैं गलत नहीं हूं और पुस्तकालयों के लिए रास्ता जोड़ रहा हूं उर्फ/plugins/system/myplugin/libraries/newfilter.php
  4. प्लगइन और लाभ सक्षम करें; )

पुनश्च। आप इस तरह से एक ओवरराइड भी जूमला कोर पुस्तकालयों और मंच बना सकते हैं। इस तरह के कर्ल एसएसएल समस्याओं के साथ; )

सादर

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.