Vico_b Posted July 17, 2019 Share Posted July 17, 2019 Bonjour à tous, Je suis en train de me former à la conception de modules, la j'essaye de faire (refaire) un cas classique ou on pourrait uploader un fichier vidéo. Le module s'installe, ma base de donnée est créée, mais le formulaire n'est pas bon et rien n'est envoyé/uploadé Voici le bout de code incriminé public function getContent() { /** * If values have been submitted in the form, process. */ if (((bool)Tools::isSubmit('submitDplus_videoproductModule')) == true) { //file upload code if (isset($_FILES['file_url'])) { $target_dir = _PS_UPLOAD_DIR_; $target_file = $target_dir . basename($_FILES['file_url']["name"]); $uploadOk = 1; $imageFileType = pathinfo($target_file, PATHINFO_EXTENSION); // Check if file already exists if (file_exists($target_file)) { echo "Sorry, file already exists."; $uploadOk = 0; } // Allow certain file formats if($imageFileType != "mp4" ) { echo "Seul le format mp4 sans piste audio est accepté"; $uploadOk = 0; } // Check if $uploadOk is set to 0 by an error if ($uploadOk == 0) { echo "Sorry, your file was not uploaded."; } else { if (move_uploaded_file($_FILES['file_url']["tmp_name"], $target_file)) { echo "The file ". basename($_FILES['file_url']["name"]). " has been uploaded."; $file_location = basename($_FILES['file_url']["name"]); Db::getInstance()->insert(_DB_PREFIX_ . 'dplus_videoproduct', array( 'id_product' => (int)(Tools::getValue('DPLUS_VIDEOPRODUCT_ID_PRODUCT')), 'video_url' => $file_location, )); } else { echo "Sorry, there was an error uploading your file."; } } } } $this->context->smarty->assign('module_dir', $this->_path); $output = $this->context->smarty->fetch($this->local_path.'views/templates/admin/configure.tpl'); return $output.$this->renderForm(); } /** * Create the form that will be displayed in the configuration of your module. */ protected function renderForm() { $helper = new HelperForm(); $helper->show_toolbar = false; $helper->table = $this->table; $helper->module = $this; $helper->default_form_language = $this->context->language->id; $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG', 0); $helper->identifier = $this->identifier; $helper->submit_action = 'submitDplus_videoproductModule'; $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false) .'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name; $helper->token = Tools::getAdminTokenLite('AdminModules'); return $helper->generateForm(array($this->getConfigForm())); } /** * Create the structure of your form. */ protected function getConfigForm() { return array( 'form' => array( 'legend' => array( 'title' => $this->l('Settings'), 'icon' => 'icon-cogs', ), 'input' => array( array( 'col' => 1, 'type' => 'text', 'desc' => $this->l('ID of the product you want to upload a video for'), 'name' => 'DPLUS_VIDEOPRODUCT_ID_PRODUCT', 'label' => $this->l('id product'), ), array( 'type' => 'file', 'desc' => $this->l('Post a video from the product you chosed'), 'name' => 'DPLUS_VIDEOPRODUCT_VIDEO', 'label' => $this->l('video'), ), ), 'submit' => array( 'title' => $this->l('Send'), 'name' => 'submitDplus_videoproductModule' ), ), ); } J'ai une erreur au niveau de la ligne `'id_product' => (int)(Tools::getValue('DPLUS_VIDEOPRODUCT_ID_PRODUCT')),` Lorsque je vais sur la page de configuration (en dev mod) il me met aussitot une l'erreur suivante : Quote Undefined index: DPLUS_VIDEOPRODUCT_ID_PRODUCT J'ai du mal à comprendre, les champs du formulaire de sont pas accessible depuis la fonction getContent ? Et surtout, pourquoi mon fichier ne s'upload pas ? C'est lié à la même erreur ? Merci d'avance pour votre aide ! Link to comment Share on other sites More sharing options...
Vico_b Posted July 18, 2019 Author Share Posted July 18, 2019 Help please 😢 Si il manque des infos dans mon post dites le moi svp ^^ Link to comment Share on other sites More sharing options...
Vico_b Posted July 19, 2019 Author Share Posted July 19, 2019 Re-help ? 💀 Link to comment Share on other sites More sharing options...
Vico_b Posted July 30, 2019 Author Share Posted July 30, 2019 Je me permet de relancer un coup car je n'ai toujours pas trouvé la raison à ce formulaire qui n'upload pas meme en regardant l'exemple de ps_banner Link to comment Share on other sites More sharing options...
Farris27 Posted July 30, 2019 Share Posted July 30, 2019 Bonjour, il te manque ta version de prestashop et php Link to comment Share on other sites More sharing options...
Vico_b Posted July 30, 2019 Author Share Posted July 30, 2019 Prestashop 1.7.5.2 pour l'environnement de dev PHP 7.3.7 Link to comment Share on other sites More sharing options...
Farris27 Posted July 30, 2019 Share Posted July 30, 2019 possibilité de voir la vue aussi ? Link to comment Share on other sites More sharing options...
Vico_b Posted July 31, 2019 Author Share Posted July 31, 2019 quelle vue ? Link to comment Share on other sites More sharing options...
Farris27 Posted July 31, 2019 Share Posted July 31, 2019 la vue template du formulaire Link to comment Share on other sites More sharing options...
Vico_b Posted July 31, 2019 Author Share Posted July 31, 2019 Il n'y a pas de template, j'utilise simplement HelperForm Link to comment Share on other sites More sharing options...
Vico_b Posted July 31, 2019 Author Share Posted July 31, 2019 (edited) Je peux faire un template bien sur avec un formulaire, pas de soucis. Mais ce que je souhaite c'est apprendre à faire fonctionner helper form. J'y arrive avec des données textuel par exemple, mais pas avec des files Edited July 31, 2019 by Vico_b (see edit history) Link to comment Share on other sites More sharing options...
hhennes Posted July 31, 2019 Share Posted July 31, 2019 Bonjour, La version 7.3 de php n'est pas officiellement compatible avec Prestashop ( cf. https://github.com/PrestaShop/PrestaShop/issues/12461 ) Idéalement il faudrait déjà mieux utiliser php 7.2 Pour gérer l'upload tu peux utiliser la classe native $uploader = new Uploader($name); //$name est à remplacer par le nom du champ $file = $uploader->setAcceptTypes('jpg') // Extensions supportées ->setMaxSize(Uploader::DEFAULT_MAX_SIZE) // Taille max ->setSavePath( _PS_MODULE_DIR_.$this->name.'/views/img/logo') //Chemin d'envoi ->process(); Cordialement, 1 Link to comment Share on other sites More sharing options...
Vico_b Posted July 31, 2019 Author Share Posted July 31, 2019 Ok, je ne savais pas pour la version de php merci Nikel l'objet, je fais ça au sein de ma fonction renderForm ou c'est à l'exécution ? (getContent) Merci pour ce step up Link to comment Share on other sites More sharing options...
hhennes Posted July 31, 2019 Share Posted July 31, 2019 (edited) Dans la fonction getContent après la vérification du isSubmit Au passage à cet endroit tu peut vérifier si ton formulaire envoie bien des données de fichier via le code suivant dump($_FILES); Edited July 31, 2019 by hhennes (see edit history) 1 Link to comment Share on other sites More sharing options...
Vico_b Posted July 31, 2019 Author Share Posted July 31, 2019 7 minutes ago, hhennes said: Dans la fonction getContent après la vérification du isSubmit Au passage à cet endroit tu peut vérifier si ton formulaire envoie bien des données de fichier via le code suivant dump($_FILES); Nice ça fonctionne ^^ Merci beaucoup Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now