Prérequis
Maitriser l’usage et la création des formulaires CVT de SPIP.
Installation
Il s’installe comme tous les plugins.
Il nécessite le plugin Médias (livré par défaut avec SPIP).
Il est recommandé d’utiliser les plugins suivants :
Comment fonctionne CVT Upload
Pour rappel, un formulaire CVT distingue :
- la vue du formulaire dans le fichier .html
- la déclaration des valeurs par défaut des champs du formulaire : fonction _charger
dans le fichier .php
- la vérification des valeurs : fonction _verifier
dans le fichier .php
- le traitement du formulaire : fonction _traiter
dans le fichier .php
.
Pour faire fonctionner CVT Upload il faut ajouter, toujours dans le fichier .php
, la fonction _fichiers
. On déclarera dans cette fonction les name
des fichiers à uploader.
CVT Upload par l’exemple
L’objectif ici est de :
- détailler le fonctionnement du formulaire
#FORMULAIRE_TEST_UPLOAD
fourni en démo dans le plugin ; - fournir un exemple de traitement des fichiers uploadés.
Vous trouverez les fichiers :
-
test_upload.html
, qui correspond à l’affichage du formulaire côté utilisateur trice s ; -
test_upload.php
, qui correspond à la déclaration des champs d’upload, à leur vérification, à leur upload.
…dans le répertoire /formulaires
du plugin.
Dans le fichier HTML : test_upload.html
- dans la balise form, ajout de l’attribut
enctype="multipart/form-data"
<form method="post" action="#ENV{action}" enctype="multipart/form-data">
…prérequis à la déclaration de champ de type<input type="file">
. Ce n’est pas particulièrement du SPIP, mais du HTML de base. - les appels aux uploads fournit avec la syntaxe de base.
À noter que les fichiers../demo/test_upload_saisie.html
ettest_upload_saisie.php
fournissent une syntaxe plus simple s’appuyant sur le plugin SAISIES.
Dans le fichier PHP : test_upload.php
Trois points importants :
- Inclusion l’API CVT Upload, c’est à dire toutes les fonctions commençant par cvtupload_…(…) et qui pourraient servir ici.
include_spip('inc/cvtupload');
- Création de la fonction
formulaires_test_upload_fichiers()
dans laquelle on doit retrouver le ou lesname
des inputs de typefile
déclaré(s) dans le fichier .html. C’est grâce à cette fonction que les mécanismes de CVT Upload s’activent.function formulaires_test_upload_fichiers() { return array('seul', 'plusieurs', 'image', 'plusieurs_images','pdf'); }
- Dans la fonction
_traiter
, on récupère le tableau des fichiers uploadés à traiter [1]. Pour ce faire, il suffit d’utiliser_request('_fichiers')
:function formulaires_test_upload_traiter() { … $fichiers = _request('_fichiers'); // hop, fichiers uploadés, récupérés ici pour traitement. … }
C’est maintenant à vous d’appliquer le traitement que vous voulez :
- enregistrer les fichiers dans la médiathèque de votre site ;
- envoyer un PDF par mail ;
- etc.
Exemple de traitement : associer les uploads à un objet éditorial
Plus précisément associer les documents à l’article 1 du site.
function formulaires_patates_traiter(){
// récupérer le tableau des données correspondants aux fichiers uploadés ou non
$fichiers = _request('_fichiers');
if (is_array($fichiers) AND count($fichiers)) {
// charger la fonction de chargement de document du plugin Medias
$ajouter_documents = charger_fonction('ajouter_documents', 'action');
// associer les documents uploadé à l'article 1 du site
foreach ($fichiers as $key => $value) {
$nouveaux_docs = $ajouter_documents('new', $fichiers[$key], 'article', '1', 'auto');
}
}
return $retours;
}
Notes : le dernier argument de la fonction $ajouter_documents
a pour valeur ’auto’. Ainsi, c’est SPIP qui détermine automatiquement quel mode il doit donner pour chaque document.
Voir à ce propos le détail de la fonction ’ajouter_documents’
Aucune discussion
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 : |