Manual:Hooks/AuthChangeFormFields/fr
AuthChangeFormFields | |
---|---|
Disponible depuis version 1.27.0 Permet de modifier les formulaires basés sur AuthManager | |
Fonction à définir : | public static function onAuthChangeFormFields( $requests, $fieldInfo, &$formDescriptor, $action ) { ... }
|
Attacher l'accroche : | Dans extension.json :
{
"Hooks": {
"AuthChangeFormFields": "MediaWiki\\Extension\\MyExtension\\Hooks::onAuthChangeFormFields"
}
}
|
Appelé de : | Fichier(s) : specialpage/AuthManagerSpecialPage.php |
Interface : | AuthChangeFormFieldsHook.php |
Pour plus d'information sur l'ajout des accroches (hooks), voir Accroches .
Pour des exemples d'extensions utilisant cette accroche, voir Category:AuthChangeFormFields extensions/fr .
Détails
$requests
- tableau de AuthenticationRequests à partir duquel les champs sont créés$fieldInfo
- tableau de description des champs (union de toutes les réponsesAuthenticationRequest::getFieldInfo()
).&$formDescriptor
- descripteur de HTMLForm. La clé spécialeweight
peut être déclarée pour modifier l'ordre des champs.$action
- une des constantesAuthManager::ACTION_*
.
$formDescriptor
va contenir la définition de HTMLForm (c'est à dire le tableau de descripteurs qui sera passé au constructeur de HTMLForm); l'accroche permet de le modifier.
Le nom des champs du fomulaire (clés de tableaux) correspondra aux noms des champs dans les requêtes.
$fieldInfo
est le résultat de AuthenticationRequest::mergeFieldInfo( $requests )
.
Mises en garde :
- vous n'avez pas le droit de modifier les requêtes
- vous n'avez pas le droit d'ajouter des champs avec des données (mais il est bon d'ajouter des champs d'information). Utilisez une méthode d'authentification
getAuthenticationRequests()
du fournisseur pour ajouter de nouveaux champs. - toute validation, contrôle de droit ou logique d'affaire dans l'accroche peut être contournée simplement en utilisant l'API. La logique d'affaire doit être dans les fournisseurs.
- toute information vitale doit également être rendue accessible via l'API. Si elle concerne les utilisateurs (comme par exemple le texte d'un CAPTCHA), utilisez un champ
null
dansAuthenticationRequest::getFieldInfo()
(qui peut être masqué ou modifié pour l'interface utilisateur web à partir de cette accroche si nécessaire). Si elle concerne les machines (comme la clé publique de l'API pour le CAPTCHA), utilisezAuthenticationRequest::getMetadata()
.
Le but de l'accroche est d'abord d'étendre les champs définis par un fournisseur dans la même extension (par exemple remplacer un champ texte par un champ à lecture prévisionnelle ou tout autre widget interactif), de modifier la position du widget ou de fournir des liens d'aide ou autres informations supplémentaires. Modifier les champs de formulaire qui appartiennent au noyau ou à d'autres extensions est autorisé mais doit de préférence être évité car cela rend le code plus fragile.