LaurentD50 Posted July 28, 2020 Share Posted July 28, 2020 Bonjour à tous, Débutant dans le dev d'un module prestashop (1.7) sans lien avec les tables de prestashop , j'ai du mal à trouver la solution pour enregistrer des valeurs dans une table de liaison à la validation du formulaire en backoffice. Le principe général (classique) étant qu'une entrée de la table principale peut appartenir à plusieurs catégories (choisies via un select multiple dans le formulaire). Dans ma classe principale (extends ObjectModel), j'ai ma variable statique $definition public static $definition = [ 'table' => 'table_principale' ,'primary' => 'id' ,fields => [ 'nom' => ['type' => self::TYPE_STRING] (...) ] ] Dans l'AdminController, j'ai la définition de mon formulaire avec le select de catégorie multiple comme suit : public function renderForm(){ (...) $this->fields_form = [ (...) 'input' => [ ['type' => 'text', name => 'nom','label' => 'Nom' 'required => true] ,['type' => 'select', name=> 'id_categ[]','label' => $this->l('Catégories'),multiple' => true,'option' => [.....] ] (...) ] ] } A la soumission du formulaire, pas de pb les valeurs sont bien modifiées dans la table principale sans que j'ai eu à écrire le traitement d'update/ create (c'est cool) mais comment enregistrer les valeurs du champ 'id_categ' dans une table de liaison qui comporterait les 2 champs suivants id et id_categ. J'ai aperçu 2 pistes après 10000 recherches 😉 : La première serait d'utiliser la méthode postProcess() dans mon AdminController pour intercepter la valeur 'id_categ' et remplir "à la main" ma table de liaison. Pas très satisfaisant intellectuellement mais bon, ça fonctionnerait. La deuxième qui peut-être ferait la mise à jour en base automatiquement serait d'utiliser dans la définition de ma classe principale la clé "associations" mais j'ai du mal à trouver des ressources pour l'utiliser correctement . Je ne sais même pas si c'est une bonne piste : 'associations' => [ 'id_categ' => ['type' => self::HAS_MANY, 'field' => '?', 'object' => 'MON_OBJET_PRINCIPAL?', 'association' => 'NOM_TABLE_LIAISON ?' ] ] La structure de la table de liaison doit peut-être respecter un nommage des champs bien précis pour que ça fonctionne automatiquement ? Ou peut-être que la mise à jour automatique est impossible ? Si l'un d'entre vous pouvait m'orienter sur des ressources ou m'expliquer le principe, ce serait salvateur . Je vous remercie par avance et j'espère avoir été assez clair 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