THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour à tous !
Je demande encore une fois conseil à la communauté pour un module en développement.
Dans ce module je souhaite gérer des champs qui seront traduits ; j’utilise donc le « i18n Behavior ».
La création de la base ok, mon problème est au niveau des formulaires d’éditions. Qd j’utilise un formulaire d’édition, j’ai l’habitude (en gros) de faire un truc du genre :

$myObject = MyModuleOptionQuery::create()
	->findPk($myPk);

$arrayData = $myObject->toArray(TableMap::TYPE_FIELDNAME);
parent::buildForm();
$this->formBuilder
	->add("id", "hidden", array("constraints" => array(new GreaterThan(array('value' => 0)))))
	->setData($arrayData) ;

Et du coup qd je gère l’internationalisation, je suis obligé de modifier  :

$myObject = MyModuleOptionQuery::create()
	->joinWithI18n($locale)
	->withColumn('mymodule_option_i18n.Title', 'title')
	->withColumn('mymodule _option_i18n.Attrtitle', 'attrtitle')
	->findPk($option_id);

$arrayData = $myObject->toArray(TableMap::TYPE_FIELDNAME);
parent::buildForm();
$this->formBuilder
	->add("id", "hidden", array("constraints" => array(new GreaterThan(array('value' => 0)))))
	->setData($arrayData);

Je ne suis pas super fan de ma solution, si qq1 à une option plus élégante je prends !
Merci !

Offline


Si la la liste des champs est statique, tu peux t'appuyer sur la fonction de traduction de Thelia :

->setData([
    'type1' => $this->translator->trans("Libellé pour type 1"),
    'type2' => $this->translator->trans("Libellé pour type 2"),
    ...
]);

OpenStudio Toulouse

Offline


Merci je vais essayer ça !