spacm Posted May 17, 2013 Share Posted May 17, 2013 (edited) Bonjour, Je souhaite ajouter un champs (iban) dans ma table address. Je me suis inspiré du tuto suivant. http://blog.manit4c....ous-prestashop/ J'ai essayé ceci en créant une classe héritée d' AddressCore, class Address extends AddressCore { public $iban;//on declare notre nouveau champs public function getFields() { error_log("Address::getFields", 0); $fields=parent::getFields(); $fields['iban'] = pSQL($this->iban);//on ajoute le champ pour la validation et l'enregistrement return $fields; } } dans: override/classes/Address.php et aussi dans: module/monmodule/override/classes/Address.php (J'ai essayé les deux). Je n'ai rien mis d'autre dans mes dossier override. Mon problème est que dans un cas comme dans l'autre, ma classe est ignorée. Y aurait il une démarche supplémentaire à effectuer pour qu'elle soit prise en compte? Une convention de nommage à respecter que j'ignore? Edited June 20, 2013 by spacm (see edit history) Link to comment Share on other sites More sharing options...
SamXIV Posted May 23, 2013 Share Posted May 23, 2013 Même problème, pourtant j'ai déjà fait des surcharges par le passé, mais là je coince sur la classe Product. Link to comment Share on other sites More sharing options...
spacm Posted June 20, 2013 Author Share Posted June 20, 2013 Voila comment il fallait faire: Address::$definition['fields']['iban'] = array ('type' => ObjectModel::TYPE_STRING, 'validate' => 'isString'); class Address extends AddressCore { public $iban;//on declare notre nouveau champs } Le principe est valable pour les classes dérivées d'ObjectModel Merci à http://www.zaibatsu....-prestashop-1-5 Par ailleurs, deux ou trois trucs à côté desquels j'étais passé: (Merci de corriger si j'ai mal compris) -Quand on définit un override, ça se fait dans le dossier override à la racine de prestashop, comme indiqué dans la doc anglophone: ps 1.5 overriding default behaviors, en respectant la structure de sous-dossiers. -Le fichier /cache/class_index.php indexe les classes, comme son nom l'indique. Donc: -en regardant son contenu, on peut voir si prestashop a connaissance de notre override -en l'effaçant, on peut (et on doit) forcer prestashop à le régénérer, afin de prendre en compte un changement (ajout ou suppression d'override) -Si on fait un override dans un module installé, prestashop n'en tient pas compte. Le dossier override dans un module permet d'y mettre les classes surchargées afin qu'à l'installation du module, ces classes soient installées dans le répertoire override racine. Je ne sais pas trop comment ça se passe à l'install du module s'il est à la charge du dev de faire la copie, ou si ps integre un mécanisme automatique pour le faire (sachant que c'est délicat, dans le cas ou plusieurs modules surchargent une même classe). 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