falatop Posted September 8, 2011 Share Posted September 8, 2011 Bonjour à tous, Je m'attèle à la création d'un module d'annuaire. Pour commencer, je me contente pour l'instant des champs 'firstname' et 'lastname' dans une table spécifique. Pour ce faire, je me suis inspiré des nombreux tutoriels qui expliquent les bases. L'installation et la désinstallation du module fonctionnent bien. La visualisation des infos saisies lors de l'installation fonctionne aussi. Pour administrer la table liée à mon module, je me suis appuyé sur le tutorial de Julien Breux (http://www.julien-br...le-avec-onglet/) pour créer un sous onglet dans la partie "Client". Le tutoriel de Julien Breux s'arrêtant à l'affichage d'un message lors du clic sur le lien, j'ai copié/collé le code de l'onglet "Group" pour tenter d'en comprendre le fonctionnement et m'appuyer sur les mécanismes existants pour gérer les données de la table de mon module C'est à partir de là que je sèche. Un clic sur ce sous onglet affiche correctement les informations saisies dans la BDD lors de l'installation (donc SELECT correct), mais je ne parviens pas à comprendre le mécanisme d'insertion, d'édition et de suppression des données dans la table ciblée. Je commence par essayer d'insérer d'autres données. Lors d'une tentative d'ajout, je récupère bien mes valeurs de formulaire via Tools::getValue('firstname'), mais elles ne sont pas enregistrées dans ma table, malgré la tentative d'execution de la requête d'insertion dans la méthode postProcess() Mon module s'appelle blockdirectory. Code de la method install(): if(!parent::install() || !$this->registerHook('leftColumn') || !$this->registerHook('rightColumn') || !$this->installModuleTab('AdminDirectory', array(1=>'My Directory', 2=>'Mon annuaire'), 2) ) return false; Code du fichier AdminDirectory.php include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php'); class AdminDirectory extends AdminTab { public function __construct() { $this->table = 'directory'; $this->className = 'Directory'; $this->lang = false; $this->edit = true; $this->view = true; $this->delete = true; $this->requiredDatabase = true; $this->fieldsDisplay = array( 'id_directory' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), 'firstname' => array('title' => $this->l('Firstname'), 'width' => 80), 'lastname' => array('title' => $this->l('Lastname'), 'width' => 80) ); parent::__construct(); } public function displayForm($isMainTab = true) { global $currentIndex, $cookie; parent::displayForm(); if (!($obj = $this->loadObject(true))) return; echo ' <form action="'.$currentIndex.'&submitAdd'.$this->table.'=1&token='.$this->token.'" method="post"> '.($obj->id ? '<input type="hidden" name="id_'.$this->table.'" value="'.$obj->id.'" />' : '').' <fieldset> <legend><img src="../img/admin/tab-groups.gif" />'.$this->l('Directory').'</legend> <label>'.$this->l('Firstname:').' </label> <div class="margin-form"> <div id="firstname" style="float: left;"> <input size="33" type="text" name="firstname" value="'.htmlentities($this->getFieldValue($obj, 'firstname'), ENT_COMPAT, 'UTF-8').'" /><sup> *</sup> </div> <div class="clear"> </div> </div> <label>'.$this->l('Lastname:').' </label> <div class="margin-form"> <div id="lastname" style="float: left;"> <input size="33" type="text" name="lastname" value="'.htmlentities($this->getFieldValue($obj, 'lastname'), ENT_COMPAT, 'UTF-8').'" /><sup> *</sup> </div> <div class="clear"> </div> </div> <div class="clear"> </div> <div class="margin-form"> <input type="submit" value="'.$this->l(' Save ').'" name="submitAdd'.$this->table.'" class="button" /> </div> </fieldset> </form> '; } public function postProcess() { global $currentIndex; $token = Tools::getValue('token') ? Tools::getValue('token') : $this->token; if (Tools::isSubmit('submitAdddirectory')) { if ($this->tabAccess['add'] === '1') { if(Tools::getValue('firstname') != ''){ $firstname = Tools::getValue('firstname'); Db::getInstance()->autoExecute($this->table, array( 'firstname' => pSQL($firstname), ), 'INSERT'); //$this->_errors[] = Tools::displayError('firstname transmis'); } if (!sizeof($this->_errors)) parent::postProcess(); //} } else $this->_errors[] = Tools::displayError('You do not have permission to add here.'); } elseif (isset($_GET['delete'.$this->table])) { if ($this->tabAccess['delete'] === '1') { if (Validate::isLoadedObject($object = $this->loadObject())) { if ($object->id == 1) $this->_errors[] = Tools::displayError('You cannot delete default group.'); else { if ($object->delete()) Tools::redirectAdmin($currentIndex.'&conf=1&token='.$token); $this->_errors[] = Tools::displayError('An error occurred during deletion.'); } } else $this->_errors[] = Tools::displayError('An error occurred while deleting object.').' <b>'.$this->table.'</b> '.Tools::displayError('(cannot load object)'); } else $this->_errors[] = Tools::displayError('You do not have permission to delete here.'); } else parent::postProcess(); } Je sais utiliser l'objet, mais je ne suis pas une brute en conception objet. Faut-il que je passe par une autre méthode pour les requêtes ? Comment récupérer les valeurs d'une ligne lors de l'édition ? Merci par avance pour tous vos éclairages 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