DamnedHippie Posted May 29, 2013 Share Posted May 29, 2013 (edited) Bonjours, l'onglet du module que je suis en train de développer sur prestashop 1.4.4.1 me pose problême au niveau du titre, en effet les lettres du nom que je défini dans mon constructeur se retrouvent distribuées une par langue en sautant la première dans ma table 'tab_lang'... quid? Ma méthode d'installation: public function install() { return parent::install() && $this->installModuleTab('AdminOrdersJustInTime', 0, 'MonModule'); } // Méthode d'installation de l'onglet du module public function installModuleTab($tabClass, $idTabParent, $tabName) { @copy(_PS_MODULE_DIR_.$this->name.'/logo.gif', _PS_IMG_DIR_.'t/'.$tabClass.'.gif'); $tab = new Tab(); if(isset($tabName)) $tab->name = $tabName; $tab->class_name = $tabClass; $tab->module = $this->name; $tab->id_parent = $idTabParent; return $tab->save(); } Et le résultat dans la base : Assez inattendu, j'ai essayé de fouiller un peu dans objectModel et dans Db et j'ai l'impression qu'a un moment il prend ma chaîne de caractères comme un tableau... comment solutionner sans toucher au code de prestashop? Si quelqu'un a une solution, elle sera la bienvenue, merci Edited May 29, 2013 by DamnedHippie (see edit history) Link to comment Share on other sites More sharing options...
DamnedHippie Posted May 29, 2013 Author Share Posted May 29, 2013 Bon, j'ai résolu mon problême mais je ne trouve pas la solution trés élegante... je suis toujours à l'écoute d'une meilleure idée. Je vous montre quand même ce que j'ai fait: en fait je modifie le titre de force dans la base après la sauvegarde de l'onglet (je met le même titre dans toutes les langues mais il serait facile d'affiner un peu. Je remplace le return $tab->save() du code précédent par: $tabSaved = $tab->save(); return $tabSaved && Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'tab_lang` SET name=\''.$this->name.'\' WHERE id_tab='.$tab->id); Voilà... ça a au moins le mérite de fonctionner Link to comment Share on other sites More sharing options...
Whoami Posted May 29, 2013 Share Posted May 29, 2013 Bonjour, Pourriez-vous faire : var_dump($tabName); ddd($tabName); Juste avant l'affectation dans l'objet de $tabName ? Sinon a part le fait qu'il n'y ai pas de contrôle / cast / pSQL() autour des items avant de les mettre dans l'objet, dans l'immédiat je ne vois rien de plus qui provoquerai ce soucis. Link to comment Share on other sites More sharing options...
DamnedHippie Posted May 30, 2013 Author Share Posted May 30, 2013 (edited) Bonjours, je viens de tenter ce que vous me proposez mais ça n'affiche rien... je ne sais pas où sont censés s'afficher les informations de var_dump. Toutefois j'ai un petite fonction permettant d'envoyer des chaînes de caractère dans un fichier de log personnel et la variable tabName contient bien le nom de mon module au moment ou je l'affecte à mon onglet. Edited May 30, 2013 by DamnedHippie (see edit history) Link to comment Share on other sites More sharing options...
Whoami Posted May 30, 2013 Share Posted May 30, 2013 Après réflexions et mon idée proposée de tête hier, j'ai été vérifier et $tab->name ne s'appelle pas comme ça dans les dernières version de 1.4 car c'est un tableau. Pour autant, en 1.4.4 je ne suis pas sûr que ça marche. Pouvez-vous essayer de faire comme ceci (par exemple, tout dépend la manière dont vous gérez la langue) : $tab->name[(int)Configuration::get('PS_LANG_DEFAULT')] = $tabName; Link to comment Share on other sites More sharing options...
DamnedHippie Posted May 30, 2013 Author Share Posted May 30, 2013 J'ai vérifié dans le fichier Tab et il ne semble pas que le champs name soit déclaré comme un tableau. J'ai essayé votre méthode par acquit de conscience et oh surprise, ça fonctionne... conclusion: je ne suis pas sûr d'avoir tout compris. Un grand merci toutefois, c'est plus élégant que la solution que j'avais trouvé. p.s: comment fait-on pour déclarer un topic comme résolut? Link to comment Share on other sites More sharing options...
Whoami Posted May 30, 2013 Share Posted May 30, 2013 Il me semble que c'est simplement en éditant le titre du premier sujet 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