জিনপুতের জন্য কীভাবে ফিল্টার তৈরি করবেন?


9

আমি জিনপুট ডকুমেন্টেশন দিয়ে গিয়েছি ।

আমরা এর মতো জিনপুট অবজেক্টটি অ্যাক্সেস করতে পারি:

JFactory::getApplication()->input;

আমরা যদি আরও মান পুনরুদ্ধার করি তবে এটি জিনপুট অবজেক্টটিকে একটি ভেরিয়েবলে সংরক্ষণ করা কার্যকর হবে তাই JFactory::getApplication()প্রতিবার যখন আমরা এটি করছি তখন আমাদের কল করার দরকার নেই :

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

জিনপুট থেকে একটি মান পুনরুদ্ধার করতে আমাদের এটির পদ্ধতিটি ব্যবহার করতে হবে:

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

আপনি দেখতে পাচ্ছেন, এর 3 টি প্যারামিটার রয়েছে:

  1. পরিবর্তনশীল নাম
  2. ডিফল্ট মান (নাল ডিফল্ট)
  3. ফিল্টার নাম (সেন্টিমিডিতে ডিফল্ট)

এবং এখানে আমার তৃতীয় প্যারামিটার সম্পর্কিত প্রশ্ন আসে।

আমি কীভাবে নিজের ফিল্টারটি তৈরি করতে পারি Jinput? উদাহরণস্বরূপ যদি আমাকে ফোন নম্বর বা আইপি ঠিকানা বৈধ করতে হয় তবে আমি কীভাবে তার জন্য নিজের ফিল্টারটি তৈরি করতে পারি?


1
এটি আমার পক্ষে এখনও অবধি 'বছরের প্রশ্ন' ... + 1
লড্ডার

আমিও, +1 - ইতিমধ্যে সেই কাস্টমাইজযোগ্য ফিল্টার সম্পর্কে জিজ্ঞাসা করেছি
টম কুশেল

উত্তর:


2

এটি বেশ সহজ

প্রথমে এটি একটি কাস্টম জিনপুট শ্রেণি তৈরি করুন যেমন class JinputTelephone// আপনি যা চান তা চান।

সম্ভবত, / লাইব্রেরি / জুমলা / ইনপুট এর অধীনে বিদ্যমান ইনপুট ফিল্টার শ্রেণিতে একবার দেখুন

// আপনি যেমন চান তেমন গিটার এবং ফিল্টারমথোডকে সংশোধন করুন

/**
 * 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');

// এই পদ্ধতির সাহায্যে আপনি নিয়মিত ইনপুট হ্যান্ডলিংও ব্যবহার করতে পারেন // তবে আপনি এটিকে কোনও অ্যাপ্লিকেশন জে অ্যাপ্লিকেশন দিয়ে ব্যবহার করতে পারবেন না

আরও অনেকগুলি উপায় রয়েছে যা করার জন্য আরও একটি সমাধান $ ডেটা = মাইফিল্টার :: সানিটাইজ নাম্বার (in জিনপুট-> পান ('বর্ণনাম', 'ডিফল্ট_মূল্য', 'কাঁচা')));

এটা কি আপনাকে সাহায্য করে?


1

আমার চেষ্টা,

আমি দেখতে পাচ্ছি যে জুমলার সাথে আপনার কিছু অভিজ্ঞতা আছে তাই আমি এটিতে আমার কয়েকটি সেন্ট লাগিয়ে দেব।

  1. আপনার সিস্টেম প্লাগইন তৈরি করতে হবে
  2. আপনার init বা এর অনুরূপ পরে কোনও পদ্ধতি তৈরি করতে হবে।
  3. JLoaderআমি আপনাকে ভুল না করে এখন আরম্ভ করতে হবে এবং লাইব্রেরিগুলিতে ওরফে পথ যুক্ত করব/plugins/system/myplugin/libraries/newfilter.php
  4. প্লাগইন এবং লাভ সক্ষম করুন; )

পুনশ্চ. আপনি এইভাবে একটি জুমলা কোর লাইব্রেরি এবং প্ল্যাটফর্মকে ওভাররাইড করে তৈরি করতে পারেন। শংসাপত্রগুলির সাথে এ জাতীয় কার্ল এসএসএল সমস্যা; )

শুভেচ্ছা

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.