Jump to content

Problême titre onglet


Recommended Posts

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 :

post-565963-0-89396100-1369812947_thumb.png

 

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 by DamnedHippie (see edit history)
Link to comment
Share on other sites

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

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

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 by DamnedHippie (see edit history)
Link to comment
Share on other sites

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

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...