Paolo75 Posted December 28, 2018 Share Posted December 28, 2018 (edited) Bonjour à tous, j'ai développé un module Prestashop qui me permet de configurer moi-même des paramètres assez divers dans ma boutique (slogans, titres, paragraphes etc...). J'ai réussi à créer un tab dans le menu du back-office qui affiche un controller admin. Problème : je n'ai absolument pas besoin d'un ObjectModel mais Prestashop semble refuser de me laisser soumettre des formulaires dans mon controlleur, voici comment j'affiche mon formulaire : <?php class AdminMasocieteController extends ModuleAdminController { // Données fictives ... mais toujours la même erreur static $definition = array( 'table' => 'fake_table', 'primary' => 'id_fake', 'multilang' => TRUE, 'fields' => array( ) ); /** * @see ModuleAdminController::__construct() * @return none */ public function __construct() { $this->bootstrap = true; $this->meta_title[] = 'Module Masociete'; $this->toolbar_title[] = 'Module Masociete'; $this->className = 'Masociete'; $this->name = 'Masociete'; $this->defaultLang = (int)Configuration::get('PS_LANG_DEFAULT'); parent::__construct(); } /** * @see ModuleAdminController::initContent() * @return mixed */ public function initContent() { parent::initContent(); $this->context->smarty->assign(array( 'content' => $this->content . $this->context->smarty->fetch(_PS_MODULE_DIR_ . 'masociete/views/templates/admin/admin.tpl') )); } /** * Render forms * @return array */ public function renderForm() { $helper = new HelperForm(); $helper->module = $this->module; $helper->identifier = $this->className; $helper->token = Tools::getAdminTokenLite('Admin'.$this->name); $helper->languages = $this->_languages; $helper->currentIndex = $this->context->link->getAdminLink('Admin'.$this->name); $helper->default_form_language = $this->defaultLang; $helper->allow_employee_form_lang = $this->defaultLang; $fields[0]['form'] = [ 'input' => [ [ 'type' => 'text', 'label' => ' Titre du bloc', 'name' => 'titre_du_bloc' ] ], 'submit' => [ 'title' => 'Sauvegarder', 'class' => 'btn btn-default pull-right' ] ]; $helper->fields_value['titre_du_bloc'] = 'Voilà un titre fictif.' return $helper->generateForm($fields); } (j'ai raccourci pour ne pas vous polluer avec les fonctions inutiles dans l'exposé de mon problème ici) Le formulaire s'affiche bien, mais quand je le submit je tombe sur une erreur qui semble en rapport avec le $definition qui sert à donner des informations sur le modèle à utiliser. Hors je n'en ai pas et je n'en veux pas, ce qui ne me semble pas impossible à faire étant donné tous les modules Prestashop que je vois et qui utilisent des controller admin pour générer leur page de configuration. J'ai essayé de donner des informations fictives, en vain. Comment faire alors ? Suis-je obligé de passer par le bouton "Configuration" de mon module pour arriver à mes fins ? Je l'ai déjà fait dans le cadre d'un autre module mais étant donné que l'on ne peut ni personnaliser le template ni accrocher un tab, je préférerais passer par un controlleur admin. Merci d'avance pour votre aide ! Edited December 28, 2018 by Paolo75 (see edit history) Link to comment Share on other sites More sharing options...
DelecroixQuentin Posted January 8, 2019 Share Posted January 8, 2019 Hello, Pour gérer l'enregistrement dans un AdminController sans ObjectModel, il faut override les méthodes processAdd / processUpdate (et sans appeler parent::process{Add|Update} dedans sinon la même erreur sera levée) et dans ces méthodes mettre ton code qui enregistre tes valeurs de ton form, par exemple: Configuration::updateValue('titre_du_bloc', Tools::getValue('titre_du_bloc'); 1 Link to comment Share on other sites More sharing options...
Paolo75 Posted January 8, 2019 Author Share Posted January 8, 2019 6 hours ago, DelecroixQuentin said: Hello, Pour gérer l'enregistrement dans un AdminController sans ObjectModel, il faut override les méthodes processAdd / processUpdate (et sans appeler parent::process{Add|Update} dedans sinon la même erreur sera levée) et dans ces méthodes mettre ton code qui enregistre tes valeurs de ton form, par exemple: Configuration::updateValue('titre_du_bloc', Tools::getValue('titre_du_bloc'); Niquel ! Merci pour ton aide ! 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