JInput Documentation を試してみました。
次のようにJInputオブジェクトにアクセスできます。
_JFactory::getApplication()->input;
_
さらに多くの値を取得する場合は、JInputオブジェクトを変数に格納すると便利です。そのため、毎回JFactory::getApplication()
を呼び出す必要はありません。
_$jinput = JFactory::getApplication()->input;
_
JInputから値を取得するには、そのgetメソッドを使用する必要があります。
_$data = $jinput->get('varname', 'default_value', 'filter');
_
ご覧のとおり、3つのパラメーターがあります。
そしてここで、3番目のパラメーターに関する私の質問が来ます。
Jinput
に独自のフィルターを作成するにはどうすればよいですか?たとえば、電話番号またはIPアドレスを検証する必要がある場合、どうすればそのための独自のフィルターを作成できますか?
これはとても簡単です
最初に、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'));
それはあなたを助けますか?
私の試み、
joomlaの経験があるようですので、数セント入れてみます。
JLoader
を開始し、ライブラリへのパスを追加する必要がありますa.k.a. /plugins/system/myplugin/libraries/newfilter.php
PS。このようにして、joomlaコアライブラリとプラットフォームをオーバーライドして作成できます。証明書に関するこのようなCurl SSLの問題。 )
よろしく