Jump to content

CorentinDav

Members
  • Posts

    72
  • Joined

  • Last visited

Profile Information

  • Activity
    Developer

CorentinDav's Achievements

Newbie

Newbie (1/14)

7

Reputation

1

Community Answers

  1. Bonjour, Je m'arrache désepérement les cheveux en tentant de décrypter le fonctionnement énigmatique de l'Object Model de Presatashop, surtout le secret le plus enfoui, le multishop. Je m'explique, j'ai une classe qui extends donc d'Object Model, cette entité possèdes des attributs "normaux" ainsi que des attributs qui dépendent de la boutique. Je n'ai pas besoin de gérer la langue. On considère deux tables ps_entite et ps_entite_shop avec ps_entite('id_entite', 'champ_non_multishop', ...) ps_entite_shop('id_entite', 'id_shop', 'champ1_multi_shop', 'champ2_multi_shop', ..._multishop, ...) Dans mon $definition, les champs multishop possèdent bien l'entrée 'shop' => true J'instancie ensuite mon objet vide, je le peuple pour ensuite faire un ...->add(); Ma table ps_entité est correctement peuplée, mais la table shop non, seul l'id et l'id_shop sont renseignés, tous les autres champs sont à "NULL". J'ai essayé dans la definition les nombreuses options à savoir multishop, multilang_shop, ... à true, rien à faire. Je suis remonté dans le code de la classe ObjectModelCore (puis la classe Shop) pour tomber sur $asso_tables = array('carrier' => array('type' => 'shop'), .... j'ai donc rajouté ma table à ce tableau (pour tester) et là, les données sont inserées uniquement dans ma table ps_entite, ce qui me donne bien evidement une erreur mysql car ces champs n'existent pas dans cette table. Pourtant, lorsque j'affiche le résultat de $this->getFieldsShop(), ils sont tous là, et tous avec les bonnes valeurs. Quelqu'un pourrait il m'éclairer sur le mystère de l'ObjectModel et du multishop s'il vous plait ? Cordialement, et bientôt chauve, CorentinDav
  2. Dans la méthode addOverride de la classe module : <?php // same as precedent but for variable foreach ($module_class->getProperties() as $property){ $module_file = preg_replace('/(public|private|protected|const)\s+(static\s+)?(\$?'.$property->getName().')/ism', "\n\t/*\n\t* module: ".$this->name."\n\t* date: ".date('Y-m-d H:i:s')."\n\t* version: ".$this->version."\n\t*/\n$1 $2 $3" , $module_file); } Euh si je comprends bien, ça remplace l'attribut par un commentaire non ? ... Soit y'a un problème, soit l'override n'est pas fait pour ajouter des fonctionnalités ?
  3. En gros j'ai : Dans le dossier du module, /override/classes/Country.php qui contient : <?php class Country extends CountryCore { public $reg_exp_cp; public static $definition = array( 'table' => 'country', 'primary' => 'id_country', 'multilang' => true, 'fields' => array( 'id_zone' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true), 'id_currency' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'), 'call_prefix' => array('type' => self::TYPE_INT, 'validate' => 'isInt'), 'iso_code' => array('type' => self::TYPE_STRING, 'validate' => 'isLanguageIsoCode', 'required' => true, 'size' => 3), 'active' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'contains_states' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'required' => true), 'need_identification_number' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'required' => true), 'need_zip_code' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'zip_code_format' => array('type' => self::TYPE_STRING, 'validate' => 'isZipCodeFormat'), 'reg_exp_cp' => array('type' => self::TYPE_STRING, 'size' => 100), 'display_tax_label' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'required' => true), /* Lang fields */ 'name' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'required' => true, 'size' => 64), ), 'associations' => array( 'zone' => array('type' => self::HAS_ONE), 'currency' => array('type' => self::HAS_ONE), ) ); } ?> J'installe le module, et dans le dossier override de la racine je me retrouve avec <?php class Country extends CountryCore { 'table' => 'country', 'primary' => 'id_country', 'multilang' => true, 'fields' => array( 'id_zone' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true), 'id_currency' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'), 'call_prefix' => array('type' => self::TYPE_INT, 'validate' => 'isInt'), 'iso_code' => array('type' => self::TYPE_STRING, 'validate' => 'isLanguageIsoCode', 'required' => true, 'size' => 3), 'active' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'contains_states' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'required' => true), 'need_identification_number' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'required' => true), 'need_zip_code' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'zip_code_format' => array('type' => self::TYPE_STRING, 'validate' => 'isZipCodeFormat'), 'reg_exp_cp' => array('type' => self::TYPE_STRING, 'size' => 100), 'display_tax_label' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'required' => true), /* Lang fields */ 'name' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'required' => true, 'size' => 64), ), 'associations' => array( 'zone' => array('type' => self::HAS_ONE), 'currency' => array('type' => self::HAS_ONE), ) ); }
  4. Bonjour, J'ai un module qui contient des overrides de controllers et classes. Quand j'installe ce module, fichiers sont crées dans le dossier /override, mais ils sont mal copiés, il manque des lignes ... Quelqu'un a t'il déjà eu ce problème ? Cordialement
  5. Bonjour, Je n'arrive pas a saisir la différence entre : Passer par un contrat de VAD (e-transaction par exemple) qui utilise le système Payboxet Passer directement par PayboxQuelqu'un pourrait il me renseigner sur ce point svp ? Cordialement.
  6. Bonjour, Prestashop utilise l'ObjectModel pour ajouter/modifier/supprimer des Produits (et pour tout le reste aussi d'ailleurs ^^). Il faut regarder du côté de la classe Products (méthode add) et aussi du côté du controller AdminProductsController dans les différentes métohdes de mises à jour. Bon courage pour la suite
  7. Bonjour, Je pense que le mieux serait de créer un tpl qui correspond à la partie que tu veux modifier, et de l'inclure dans le product.tpl à la place de la fiche technique actuelle.
  8. 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
  9. 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.
  10. Bonjour, Tout d'abord, le controller doit être sous modules/tonmodule/controllers/admin/AdmintoncontrollerController.php Ensuite, tu peux t'inspirer des controllers existants dans le back office pour créer ton module. ^^
  11. Bonjour, Une colonne est nommée 'Titre de civilité', Problème de traduction peut-être ?
  12. il faut supprimer le fichier install-1-3-2.php dans le dossier du module homeslider/upgrade si je me rappel bien
×
×
  • Create New...