Comment rendre l'upload obligatoire ?

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Presque tout est dans le titre.
Je voudrais en effet rendre obligatoire l'upload d'un fichier (et seulement d'un) dans un content_type que j'ai crée.

Merci d'avance

Version de Drupal : 

Salut,

A ma connaissance, il n'y a pas de façon de le faire sans programmer un module.

Dans ce module, tu dois :

1) Implémenter le hook_form_alter() qui te permettra d'intercepter le formulaire qui contient le champ Upload. A ce formulaire, tu attacheras une fonction de validation maison en écrivant :

<?php
$form
['#validate']['node_upload_validate'] = array();
?>

2) Il faut ensuite créer la fonction de validation maison, qui vérifie que le formulaire contient bien un fichier uploadé (et déclenche une erreur si ce n'est pas le cas) :

<?php
function node_upload_validate($form_id, $form_values) {
 
// Vérifie qu'on a un upload.
 
if (!isset($form_values['files'])) {
   
form_set_error('attachments][wrapper][new][upload', "Ce contenu doit posséder un fichier attaché.");
  }
 
// Vérifie qu'on n'a pas plus d'un upload.
 
if ((isset($form_values['files']) && count($form_values['files']) != 1)) {
   
form_set_error('upload', "Ce contenu ne doit posséder qu'un seul fichier attaché");
  }
}
?>

Merci pour ta rapidité (1h) ^^

J'ai en fait un module qui tourne déjà et développé par mon prédécesseur qui parse le fichier uploader. Je vais voir pour intégrer tes bouts de code dedans.

Pour une autre raison, j'ai commencé à utiliser le module cck. Celui-ci propose un module pour faire un champ de téléchargement qu'on peut comme tous les autres champs rendre obligatoire.
Mais quand je l'ai testé le module qui parse les fichiers ne se déclenche plus.

Je vais tester ça, merci.

Asmo

PS : j'aime bien la bouteille de rouge derrière toi dans la vidéo ^^
[Ma vie]Ton programme de formation semble intéressant mais je suis dans un établissement (CNRS) pas bien riche et sur un projet encore moins riche ^^' et à une position pas bien pérenne pour demander des formations. [/Ma vie]

Oublie tout ça.
Si tu débutes, tu as sûrement installé la version 6.16. Ici, le poste date de 2007 et la version de drupal est 5.xxx.
D'autres part, le module CCK te permet maintenant de faire tout ça sans une ligne de code.
Lis un maximum de documentation sur CCK et fais de nombreux tests. Drupal demande de l'engagement.