Jinputのフィルターを作成するには?


9

私はとて行っているJInputドキュメント

次のようにJInputオブジェクトにアクセスできます。

JFactory::getApplication()->input;

さらに多くの値を取得する場合は、JInputオブジェクトを変数に格納すると便利です。そうするJFactory::getApplication()たびに呼び出す必要はありません。

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

JInputから値を取得するには、そのgetメソッドを使用する必要があります。

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

ご覧のとおり、3つのパラメーターがあります。

  1. 変数名
  2. デフォルト値(デフォルトはnull)
  3. フィルター名(デフォルトはcmd)

そしてここで、3番目のパラメーターに関する私の質問が来ます。

独自のフィルターを作成するにはどうすればよいJinputですか?たとえば、電話番号またはIPアドレスを検証する必要がある場合、どうすればそのための独自のフィルターを作成できますか?


1
これは私にとって「今年度の質問」です... + 1
Lodder

私も+
1-

回答:


2

これはとても簡単です

最初にclass JinputTelephone//必要なものなどのカスタムJinputクラスを作成します。

おそらく、/ libraries / joomla / inputの下にある既存のinputfilterクラスを確認してください。

// getterとfilterMethodを必要に応じて変更します

/**
 * 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の入力では使用できません

他の多くの方法があります。別のソリューション$ data = MyFilter :: SanitizeNumber($ jinput-> get( 'varname'、 'default_value'、 'raw'));

それはあなたを助けますか?


1

私の試み、

joomlaの経験があるようですので、数セント入れてみます。

  1. システムプラグインを作成する必要があります
  2. initなどの後にメソッドを作成する必要があります。
  3. 今、あなたJLoaderは私が間違っていなければ開始し、別名ライブラリへのパスを追加する必要があります/plugins/system/myplugin/libraries/newfilter.php
  4. プラグインと利益を有効にします。)

PS。このようにして、joomlaコアライブラリとプラットフォームをオーバーライドして作成できます。証明書に関するこのようなCurl SSLの問題。)

よろしく

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.