Avec la révision 32274 un système de validation de saisie est introduit dans le plugin crayons.
Avant de mettre à jour la base de donnée la fonction verifier_type_modele($modifs) est chargée si présente.
Le modèle peut être un champ ou un contrôleur regroupant plusieurs champs.
Par exemple pour vérifier la saisie des crayons titres il faudra créer une fonction
verifier_article_titre()
Pour une base distante : verifier_basedistante__table_modele()
Si la fonction de vérification détecte une saisie invalide, elle renvoie un message et les caractères invalides. Le crayons refuse alors la mise à jour de la base de donnée, applique la classe crayon-invalide au champ, affiche les caractères invalides et le message.
Exemple de fonction qui interdit la saisie de chiffre dans le champ nom de la table profs de la base educ :
$modifs= array ( 0 =>
array (
0 => 'educ__prof', //basedistante__table
1 => 'nom', //champ
2 => '6', //id_prof
3 =>
array (
'nom' => 'nommodifier',
),
4 => 'wid4ae01b0a85b2a7_70591198',
)
function verifier_educ__prof_nom($modifs) {
$reg='/[\d]+/';
$r=preg_match_all($reg,$modifs[0][3]['nom'],$matches);
if( $r>0 ) {
$invalides[$modifs[0][4].'_nom']['msg']=_T('chiffres_minuscules_interdits');
$invalides[$modifs[0][4].'_nom']['retour']=implode(',',$matches[0]);
}
return $invalides;
}
Discussions par date d’activité
3 discussions
Petite trouvaille de Pierrox : il existe un pipeline « crayons_verifier » qui permet de modifier la valeur soumise, si une valeur est retournée dans normaliser.
Voir https://zone.spip.org/trac/spip-zone/browser/_plugins_/crayons/action/crayons_store.php?rev=100962#L138
Répondre à ce message
Est-ce qu’il serait possible de fournir un exemple plus simple du tableau que peut renvoyer la fonction « verifier » ? Ou alors la structure du tableau ?
Chouette nouvelle en tout cas :)
La fonction doit s’appeler
si le fichier controleur s’appelle
chat_nom.html
ou plus généralement si le crayon modifie le champnom
de l’objetchat
.Si on utilise le crayon
hyperlien
pour modifierlien_nom
etlien_url
dans les breves, par exemple, la fonction sera :Le paramètre
$modifs
contient une seule cellule qui contient elle-même 5 cellules :$modifs[0][0]
: le nom de l’objet (ex :chat
oubreve
)$modifs[0][1]
: le nom du crayon (ex :nom
ouhyperlien
)$modifs[0][2]
: index de l’objet (ex :12
- valeur deid_chat
ouid_breve
)$modifs[0][3]
: nouvelle valeur à vérifier (ex :array('nom' => ''Efia",)
ou dans le cas dehyperlien
:array('lien_titre'=>'Google','lien_url'=>'http://www.google.fr',)
$modifs[0][4]
: un identifiant bizarre (ex :wid4e30852faf2683_70025054
)Donc, pour résumer :
verifier_chat_nom
:verifier_breve_hyperlien
:Ensuite pour le tableau de retour, si on se fie au code des crayons (
action/crayons_store.php
, fonctioncrayons_store
) :Il faut donc rendre (si on veut signaler une erreur) un tableau $invalides non vide :
Le résultat est un cadre rouge, sous le crayon, qui contient « premier message deuxieme message ».
Et d’après mes essais, il faut définir cette fonction dans un fichier
_options.php
:config/mes_options.php
prefixe_options.php
Ca ne marche pas en la définissant dans un fichier
_fonctions.php
.Petite trouvaille de Pierrox : il existe un pipeline « crayons_verifier » qui permet de modifier la valeur soumise, si une valeur est retournée dans normaliser.
Voir https://zone.spip.org/trac/spip-zone/browser/_plugins_/crayons/action/crayons_store.php?rev=100962#L138
Répondre à ce message
Bonjour
Je cherche à réaliser un couple Controleur/vue pour une DATE (champ : date_app)
La date étant entrée « à la française » elle nécessite un traitement avant stockage.
Ma fonction verifier_approche_date_app est appelée, mais sans la valeur modifiée. que puis-je essayer ?
Merci d’avance
Michel
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |