J'ai parcouru le JInput Documentation .
Nous pouvons accéder à l'objet JInput comme ceci:
JFactory::getApplication()->input;
Si nous récupérons plus de valeurs, il serait utile de stocker l’objet JInput dans une variable afin que nous n’ayons pas besoin d’appeler JFactory::getApplication()
à chaque fois que nous le faisons:
$jinput = JFactory::getApplication()->input;
Pour récupérer une valeur de JInput, nous devons utiliser sa méthode get:
$data = $jinput->get('varname', 'default_value', 'filter');
Comme vous pouvez le voir, il a 3 paramètres:
Et voici ma question concernant le troisième paramètre.
Comment puis-je créer mon propre filtre pour Jinput
? Par exemple, si je dois valider des numéros de téléphone ou une adresse IP, comment puis-je créer mon propre filtre pour cela?
c'est assez simple
En premier, créez une classe Jinput personnalisée telle que class JinputTelephone
// tout ce que vous voulez.
peut-être, regardez dans les classes inputfilter existantes sous/libraries/joomla/input
// Modifier le getter et filterMethod à votre guise
/**
* 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;
}
// usage
$phoneInput = new JinputTelephone();
$phoneInput->get('anPhoneNumber','0040','phonyfilter');
// avec cette méthode, vous pouvez également utiliser la gestion des entrées régulière // Mais vous ne pouvez pas l'utiliser avec JApplication une entrée
Il existe de nombreuses autres façons de le faire. Une autre solution $ data = MyFilter :: SanitizeNumber ($ jinput-> get ('varname', 'default_value', 'raw'));
ça vous aide?
Mon essai,
je vois que vous avez une certaine expérience de joomla, je vais donc y mettre mes quelques sous.
JLoader
si je ne me trompe pas et ajouter le chemin vers les bibliothèques a.k.a. /plugins/system/myplugin/libraries/newfilter.php
PS vous pouvez créer de cette manière un remplacement également des bibliothèques et de la plate-forme joomla. Un tel problème SSL Curl avec les certs; )
cordialement