Utiliser Bigup dans un formulaire
- EDIT dec. 2023 : Pour utiliser Formidable et Bigup dans l’espace public, configurez Bigup (ecrire/ ?exec=configurer_bigup) pour inclure les scripts et ajoutez « bigup » au champ Fichier(s) de Formidable dans les Classes CSS supplémentaires.
Un début de documentation existe mais il n’est pas complet : https://git.spip.net/spip/bigup#user-content-cr%C3%A9ation-d-un-formulaire-pour-uploader-les-fichiers
Voici quelques notes pour compléter.
Il y a 2 cas de figure :
1. Formulaire sans saisies
2. Formulaire avec saisies
0. Se signaler à Bigup dans le charger
Dans tous les cas, il faut indiquer à bigup de rechercher les fichiers uploadés dans le formulaire en ajoutant une clé _bigup_rechercher_fichiers dans le charger :
$valeurs['_bigup_rechercher_fichiers'] = true;
1. Formulaire sans saisies
HTML
Ajouter la classe bigup sur l’input file : [1]
<input type="file" id="#GET{name}" name="#GET{name}" class="file bigup" />
PHP
Enfin, ajouter une fonction inc_bigup_medias_formulaire_xxx_dist.
Celle-ci est nécessaire pour ajouter un token unique sur l’input du formulaire.
Exemple pour un #FORMULAIRE_PATATES :
/**
* @param array $args
* @param \Spip\Bigup\Formulaire $formulaire
* @return \Spip\Bigup\Formulaire
*/
function inc_bigup_medias_formulaire_patates_dist($args, $formulaire) {
$formulaire->preparer_input_class(
'bigup', // 'file' pour rendre automatique.
['previsualiser' => true]
);
return $formulaire;
}
2. Formulaire avec saisies
Le plus simple est de faire un formulaire en saisies et d’utiliser la saisie bigup.
Si les saisies sont déclarées en HTML il n’y a rien de spécial à faire :
[(#SAISIE_FICHIER{bigup, file_pdf_article,
label=<:plugin:label_file:>,
obligatoire=oui})]
Pour des saisies en php, il faut transmettre l’environnement au moyen de l’option env
:
[
'saisie' => 'bigup',
'options' => [
'nom' => 'file_pdf_article',
'label' => _T('plugin:label_file'),
'env' => true, // nécessaire pour le token (form + formulaire_args)
],
],
Attention, l’option obligatoire
n’est pas encore correctement prise en compte.
Pour l’instant il faut vérifier l’obligation soi-même dans le verifier du formulaire, exemple :
function formulaires_truc_verifier_dist() {
// Fichier obligatoire
if (
!isset($_FILES['file_pdf_article'])
or !file_exists($_FILES['file_pdf_article']['tmp_name'])
) {
$erreurs['file_pdf_article'] = _T('info_obligatoire');
}
return $erreurs;
}
[1] il peut s’agir de n’importe quelle classe mais c’est plus simple ainsi.