paradeyes Posted April 1, 2014 Share Posted April 1, 2014 (edited) Bonjour, Lors de la migration à la 1.6, comme expliqué dans un autre topic (http://www.prestashop.com/forums/topic/320188-probl%C3%A8me-mise-en-forme-helperlist-sur-passage-%C3%A0-16-module-perso/), j'ai rencontré quelques soucis de compatiblité sur quelques modules persos réalisés à partir du canvas proposé par JDanse (encore merci à lui ). Mon dernier petit soucis concerne le HelperForm, et notamment les champs de type "File" (dont je me sert pour gérer les images). Au chargement de la page, j'obtiens une fatal error : Fatal error: Uncaught exception 'SmartyException' with message 'Unable to load template file '/home/....../modules/blockactualitesnea/views/templates/admin/helpers/uploader/simple.tpl'' in /home/.../monsite/tools/smarty/sysplugins/smarty_internal_templatebase.php:127 Stack trace: #0 /home/....../monsite/classes/helper/HelperUploader.php(288): Smarty_Internal_TemplateBase->fetch() #1 /home/...../monsite/classes/helper/HelperForm.php(154): HelperUploaderCore->render() #2 /home/....../monsite/classes/helper/HelperForm.php(65): HelperFormCore->generate() #3 /home/....../monsite/classes/controller/AdminController.php(2045): HelperFormCore->generateForm(Array) #4 /home/....../monsite/modules/blockactualitesnea/controllers/admin/AdminBlockActualitesNea.php(760): AdminControllerCore->renderForm() #5 /home/...../monsite/classes/controller/AdminController.php(1738): AdminBlockActualitesNeaController->renderForm() #6 /home/....../monsite/classes/controller/Controller.php(180): AdminControllerCore->init in /home/....../monsite/tools/smarty/sysplugins/smarty_internal_templatebase.php on line 127 Voici le code de mon HelperForm : public function renderForm() { $this->fields_form = array( 'tinymce' => true, 'legend' => array( 'title' => $this->l('Nouvelle actualite'), 'image' => '../img/admin/cog.gif' ), 'input' => array( array( 'type' => 'text', 'label' => $this->l('Date : '), 'name' => 'mydate', 'size' => 30, ), array( 'type' => 'text', 'label' => $this->l('Titre : '), 'name' => 'titre', 'size' => 50, ), array( 'type' => 'textarea', 'label' => $this->l("Actualité :"), 'name' => 'text', 'cols' => 40, 'rows' => 10, 'autoload_rte' => true, ), array( // <----------------CHAMP QUI POSE PROBLEME 'type' => 'file', 'label' => $this->l('Image associée :'), 'name' => 'OFFRE_IMG', 'display_image' => true, 'image' => 'actualites', ), ), 'submit' => array( 'title' => $this->l('Save'), 'class' => 'button' ) ); if (!($obj = $this->loadObject(true))) return; return parent::renderForm(); } } Le champ qui pose donc problème est celui-ci : array( // <----------------CHAMP QUI POSE PROBLEME 'type' => 'file', 'label' => $this->l('Image associée :'), 'name' => 'OFFRE_IMG', 'display_image' => true, 'image' => 'actualites', ), (tout fonctionne très bien quand je le commente) Auriez vous des pistes de réflexion pour corriger ce problème ? (je précise que j'ai tenté de rajouter un .tpl au chemin indiqué dans la fatalerror, mais rien n'y fait) Merci d'avance pour votre aide ! Edited April 1, 2014 by paradeyes (see edit history) 1 Link to comment Share on other sites More sharing options...
CorentinDav Posted April 1, 2014 Share Posted April 1, 2014 Essaye d'enlever la ligne 'display_image' => true, Link to comment Share on other sites More sharing options...
paradeyes Posted April 1, 2014 Author Share Posted April 1, 2014 Merci pour ton aide, malheureusement cela ne fonctionne toujours pas... (j'avais également tenté de le passer à False) Link to comment Share on other sites More sharing options...
CorentinDav Posted April 1, 2014 Share Posted April 1, 2014 ah, essaye de creuser du côté du fichier HelperForm.php, et HelperUploader.php, tu pourra y voir les paramètres attendus pour un champ de type 'file' et tu verra comment ils sont générés ^^ bon courage Link to comment Share on other sites More sharing options...
paradeyes Posted April 1, 2014 Author Share Posted April 1, 2014 Effectivement j'avais déjà fouillé de ce côté là ! Voici ce que dit la classe HelperForm.php pour un champ de type File : case 'file': $uploader = new HelperUploader(); $uploader->setId(isset($params['id'])?$params['id']:null); $uploader->setName($params['name']); $uploader->setUrl(isset($params['url'])?$params['url']:null); $uploader->setMultiple(isset($params['multiple'])?$params['multiple']:false); $uploader->setUseAjax(isset($params['ajax'])?$params['ajax']:false); $uploader->setMaxFiles(isset($params['max_files'])?$params['max_files']:null); if (isset($params['files']) && $params['files']) $uploader->setFiles($params['files']); elseif (isset($params['image']) && $params['image']) // Use for retrocompatibility $uploader->setFiles(array( 0 => array( 'type' => HelperUploader::TYPE_IMAGE, 'image' => isset($params['image'])?$params['image']:null, 'size' => isset($params['size'])?$params['size']:null, 'delete_url' => isset($params['delete_url'])?$params['delete_url']:null ))); if (isset($params['file']) && $params['file']) // Use for retrocompatibility $uploader->setFiles(array( 0 => array( 'type' => HelperUploader::TYPE_FILE, 'size' => isset($params['size'])?$params['size']:null, 'delete_url' => isset($params['delete_url'])?$params['delete_url']:null, 'download_url' => isset($params['file'])?$params['file']:null ))); if (isset($params['thumb']) && $params['thumb']) // Use for retrocompatibility $uploader->setFiles(array( 0 => array( 'type' => HelperUploader::TYPE_IMAGE, 'image' => isset($params['thumb'])?'<img src="'.$params['thumb'].'" alt="'.(isset($params['title']) ? $params['title'] : '').'" title="'.(isset($params['title']) ? $params['title'] : '').'" />':null, ))); $uploader->setTitle(isset($params['title'])?$params['title']:null); $params['file'] = $uploader->render(); break; J'ai bien tenté de rajouter les champs "size", "delete_url" dans la définition de mon champ... mais rien n'y fait, toujours la même fatalerror .... Link to comment Share on other sites More sharing options...
paradeyes Posted April 1, 2014 Author Share Posted April 1, 2014 (Je précise que le problème est le même sur un autre module dont le champ "File" ne gère pas une image, mais un simple fichier numérique type PDF ou doc : ) array( 'type' => 'file', 'label' => $this->l('Fichier associé :'), 'desc' => $this->l('PDF, .doc, .zip, ... Taille max 8 Mo'), 'name' => 'URL_doc', ), Link to comment Share on other sites More sharing options...
J. Danse Posted April 1, 2014 Share Posted April 1, 2014 La solution (qui fonctionne mais bon, ...) est de rajouter ceci dans le ModuleAdminController: public function getTemplatePath() { return _PS_BO_ALL_THEMES_DIR_.$this->bo_theme.'/template/'; } 2 Link to comment Share on other sites More sharing options...
paradeyes Posted April 1, 2014 Author Share Posted April 1, 2014 (edited) Bonjour J. Danse, et merci pour ton aide ! J'ai rajouté cette fonction dans le fichier /controllers/admin/AdminModulesController.php, comme tu l'as indiqué, mais j'ai toujours cette fatalerror... J'ai bien vidé les caches, etc etc.... Il y a une manip que j'aurai pu oublier ? Merci encore! Edited April 1, 2014 by paradeyes (see edit history) Link to comment Share on other sites More sharing options...
paradeyes Posted April 1, 2014 Author Share Posted April 1, 2014 Pardon j'avais mal compris, j'éditais le mauvais fichier..En rajoutant ceci au ModuleAdminController (du module !), cela fonctionne effectivement très bien ! Merci beaucoup pour votre aide 1 Link to comment Share on other sites More sharing options...
J. Danse Posted April 1, 2014 Share Posted April 1, 2014 Mes excuses pour l'explication hasardeuse, ;-) Link to comment Share on other sites More sharing options...
paradeyes Posted April 1, 2014 Author Share Posted April 1, 2014 Désolé de tous ces messages...Après avoir testé, j'ai perdu quelques fonctionnalités bien pratiques de ce champ "File", notamment la possibilité de pouvoir supprimer le fichier directement (via la petite "croix" supprimer), ainsi que l'aperçu de l'image (cf. capture ci-jointe)Est-ce que c'est normal ? ou cela vient-il de mon code? (je me permets de poser la question car vos indications m'ont fait plus avancer en 10 minutes qu'en 2 jours de recherche !) Link to comment Share on other sites More sharing options...
J. Danse Posted April 1, 2014 Share Posted April 1, 2014 Est-ce que les $fields_value sont remplies, tiens ? (Je présume que oui, sinon ça générerait une erreur et vous auriez posé la question, je me trompe ? ;-)). Alors, essayez un peu ceci: array( 'type' => 'file', 'label' => $this->l('Block image'), 'name' => 'PRODUCTPAYMENTLOGOS_IMG', 'desc' => $this->l('If your shop\'s payment methods differ from the ones presented in the default image, then you must create your own image with the necessary logos.'), 'thumb' => '../modules/'.$this->name.'/img/'.Configuration::get('PRODUCTPAYMENTLOGOS_IMG'), ), Qu'il faut bien entendu adapter à son code. 1 Link to comment Share on other sites More sharing options...
paradeyes Posted April 2, 2014 Author Share Posted April 2, 2014 Merci beaucoup de prendre le temps de me répondre Le champ Thumb me permet effectivement de rajouter un aperçu de l'image. Par contre je n'ai toujours pas la fonctionnalité pour supprimer l'image (ou le fichier). Mais rien de bien méchant, je vais rajouter manuellement un bouton "Supprimer" et cela ira très bien ! Merci encore; j'arrête là de vous embêter ! 1 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