olivorel Posted February 8, 2018 Share Posted February 8, 2018 (edited) Bonjour, étant débutante en php et prestashop (que je connais depuis lundi seulement), on me demande de créer un bloc de texte. J'ai suivi un tuto sur le net et cela fonctionne. Maintenant j'essaie de rajouter un champs titre à mettre au dessus de ce bloc de texte dans le BO, mais je n'y parviens pas... j'ai un message d'erreur d'office... J'essaie de nommer une variable my_module_title et de faire exactement comme le my_module_name. Le titre doit être personnalisable comme le champs texte. Pourriez vous m'aiguiller? <?php if (!defined('_PS_VERSION_')) exit; class MyModule extends Module { /*construction du module*/ public function __construct() { $this->name = 'mymodule'; $this->tab = 'front_office_features'; $this->version = '1.0'; $this->author = 'Aurel'; $this->need_instance = 0; $this->dependencies = array('blockcart'); parent::__construct(); $this->displayName = $this->l('My module'); $this->description = $this->l('Description of my module.'); $this->confirmUninstall = $this->l('Are you sure you want to uninstall?'); if (!Configuration::get('MYMODULE_TITLE')) $this->warning = $this->l('No title provided'); if (!Configuration::get('MYMODULE_NAME')) $this->warning = $this->l('No name provided'); } /*installe le module*/ public function install() { if (Shop::isFeatureActive()) Shop::setContext(Shop::CONTEXT_ALL); return parent::install() && $this->registerHook('leftColumn') && $this->registerHook('header') && Configuration::updateValue('MYMODULE_NAME', 'text') && Configuration::updateValue('MYMODULE_TITLE', 'Title') } /*permet de désinstaller*/ public function uninstall() { if (!parent::uninstall()) Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'mymodule`'); parent::uninstall(); } /*permet d'assigner le template du module dans la colonne de gauche*/ public function hookDisplayLeftColumn($params) { $this->context->smarty->assign( array( 'my_module_name' => Configuration::get('MYMODULE_NAME'), 'my_module_title' => Configuration::get('MYMODULE_TITLE') 'my_module_link' => $this->context->link->getModuleLink('mymodule', 'display'), 'my_module_message' => $this->l('This is a simple text message') // Ne pas oublier de mettre la chaîne dans la méthode de traduction l() ) ); return $this->display(__FILE__, 'mymodule.tpl'); } /*permet d'affecter à la colonne de droite la même chose que la colonne de gauche*/ public function hookDisplayRightColumn($params) { return $this->hookDisplayLeftColumn($params); } /*ajoute le style du module*/ public function hookDisplayHeader() { $this->context->controller->addCSS($this->_path.'css/mymodule.css', 'all'); } /*permet de configurer la page configuration du box office PS*/ public function getContent() { $output = null; if (Tools::isSubmit('submit'.$this->name)) { $my_module_name = strval(Tools::getValue('MYMODULE_NAME')); if (!$my_module_name || empty($my_module_name) || !Validate::isGenericName($my_module_name)) $output .= $this->displayError( $this->l('Invalid Configuration value') ); else { Configuration::updateValue('MYMODULE_NAME', $my_module_name); $output .= $this->displayConfirmation($this->l('Settings updated')); } $my_module_title = strval(Tools::getValue('MYMODULE_TITLE')); if (!$my_module_title || empty($my_module_title) || !Validate::isGenericName($my_module_title)) $output .= $this->displayError( $this->l('Invalid Configuration value') ); else { Configuration::updateValue('MYMODULE_NAME', $my_module_title); $output .= $this->displayConfirmation($this->l('Settings updated')); } } return $output.$this->displayForm(); } //Le formulaire de configuration lui-même est affiché par la méthode displayForm() public function displayForm() { // récupération de la valeur de la langue par défaut $default_lang = (int)Configuration::get('PS_LANG_DEFAULT'); // Initialise les champs du tableau //tableau multidimensionnel avec field_form $fields_form[0]['form'] = array( 'legend' => array( 'title' => $this->l('Settings'), ), 'input' => array( array( 'type' => 'text', 'label' => $this->l('Configuration value'), 'name' => 'MYMODULE_NAME', 'size' => 20, 'required' => true ) ), 'input' => array( array( 'type' => 'text', 'label' => $this->l('Configuration value title'), 'name' => 'MYMODULE_TITLE', 'size' => 20, 'required' => true ) ), 'submit' => array( 'title' => $this->l('Save'), 'class' => 'button' ) ); $helper = new HelperForm(); // Module, token and currentIndex // requiert une instance du module qui utilisera les données du formulaire. $helper->module = $this; $helper->name_controller = $this->name; // requiert un jeton (token) unique et propre au module. getAdminTokenLite() en génère un pour vous. $helper->token = Tools::getAdminTokenLite('AdminModules'); $helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->name; // Langue par défaut de la boutique $helper->default_form_language = $default_lang; $helper->allow_employee_form_lang = $default_lang; // Title and toolbar $helper->title = $this->displayName; $helper->show_toolbar = true; // false -> remove toolbar $helper->toolbar_scroll = true; // yes - > Toolbar is always visible on the top of the screen. $helper->submit_action = 'submit'.$this->name; $helper->toolbar_btn = array( 'save' => array( 'desc' => $this->l('Save'), 'href' => AdminController::$currentIndex.'&configure='.$this->name.'&save'.$this->name. '&token='.Tools::getAdminTokenLite('AdminModules'), ), 'back' => array( 'href' => AdminController::$currentIndex.'&token='.Tools::getAdminTokenLite('AdminModules'), 'desc' => $this->l('Back to list') ) ); // Load current value $helper->fields_value['MYMODULE_NAME'] = Configuration::get('MYMODULE_NAME'); $helper->fields_value['MYMODULE_NAME'] = Configuration::get('MYMODULE_TITLE'); return $helper->generateForm($fields_form); } } ?> Edited February 8, 2018 by olivorel (see edit history) 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