Jump to content

Object Model et multilang


Recommended Posts

Bonjour,

 

J'ai un module qui contient une classe "maclasse" qui extends d'ObjectModel,

 

J'ai remarqué que si tous les champs sont multilangue, l'ajout d'une instance (méthode add()) ne fonctionne pas correctement.  (ID toujours à 0 et donc duplicate primary key dans la table "maclasse_lang").

 

si je rajoute un champ dans la table "maclasse", tout fonctionne correctement.

 

Est-ce normal ?

 

Cordialement.

 

Link to comment
Share on other sites

Bonsoir,

 

Normalement, il y a au moins l'id qui n'est pas multilangue. On aurait donc id_maclasse comme seul et unique champ de la table "maclasse" et dans "maclasse_lang", au moins deux champs "id_maclasse" et "id_lang", la clé primaire étant dès lors ce couple.

 

Jusque là, on est bon ? C'est comme ça que c'est actuellement prévu dans votre ObjectModel ? :)

Link to comment
Share on other sites

Effectivement mon ObjectModel et les tables ont cette structure,

 

J'ai eu besoin de rajouter un champ non multilangue donc maintenant cela fonctionne, mais je ne comprends pas pourquoi avec seulement l'ID cela ne fonctionnais pas.

 

Du coup je suis maintenant face à un autre problème,

 

J'ai en fait deux objectmodel pour mon module, un comprenant des caractéristiques (dont l'intitulé est multilang) j'ai donc une table carac avec un ID + un champ nom multilangue, ainsi qu'une table carac_lang avec id_carac, id_lang, et name.

 

J'ai ensuite une autre table item et item lang, la première contient donc l'id_item + un champ nom multilang, et la table item_lang ayant la structure suivante : id_item, id_lang, id_carac, value.

 

A côté de tout ça, j'ai un controller, je voudrais que son comportement soit le suivant :

 

Une renderList qui affiche tous les items avec leur caractéristiques (dans la langue du context actuel du BO) ça pas trop de soucis je pense je vais modifier la requête SQL dans le constructeur en utilisant $this->_select et ses compères.

 

On peut alors ajouter/modifier les items en remplissant toutes les caractéristiques pour chaque langue, la je bloque, je ne vois pas trop comment générer le formulaire (renderForm) car les caractéristiques sont sur la table carac, mais les enregistrements se font dans les tables item et item_lang.

 

Mettons deux caractéristiques carac1 ,carac2. Je crée un nouvel item, je remplis donc le champ non multilangue avec val, puis pour chaque langue, carac1 avec val1 et carac2 avec val2. Le comportement attendu est donc :

 

Dans la table item une entrée :

  • id_item -> 1
  • champNonMultilangue -> val

Dans la table item_lang les entrées selon les langues et les val1 et val2 pour chaque langue.

Par exemple pour deux langues on aurait 4 entrées. 

 

Je suis en train de regarder le controller des Features (Features et FeaturesValue) pour tenter de faire un code similaire.

 

Tout aide est la bienvenue, en espérant avoir été le plus clair possible ^^

 

Cordialement

 

EDIT : j'ai oublié l'essentiel : PS 1.6.0.5 :)

Edited by CorentinDav (see edit history)
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...