stopher Posted July 29, 2015 Share Posted July 29, 2015 Bonjour à tous, je rencontre un probléme pour la mise à jour d'un objet order dans un Hook voici le code trés simple : public function hookActionValidateOrder($params){ $params['order']->customerRefOrder = $params['cart']->customerRefOrder; $params['order']->update(); } Malheureusement .. rien ne se passe . L'attribut est pourtant bien renseigné , mais la méthode update ne fait .. rien ( ou je ne le vois pas :/ ) Avez vous une idée ? Merci d'avance, Ch. Link to comment Share on other sites More sharing options...
stopher Posted July 30, 2015 Author Share Posted July 30, 2015 Aprés quelques recherches, ej'ai remarqué que la méthode getFields() d'ObjectModel ne renvoi pas les champs ajoutés via la surcharge . Normal ? Link to comment Share on other sites More sharing options...
PrestaModule · Jona Posted July 30, 2015 Share Posted July 30, 2015 Bonjour, Tout dépend de comment votre surcharge est réalisée, à dire vrai Link to comment Share on other sites More sharing options...
stopher Posted July 30, 2015 Author Share Posted July 30, 2015 (edited) Ok, en fait mes champs que je déclare dans le constructeur de ma classe de surcharge, disparaissent de l'attribut definition lorsque je fait un simple update(). class Order extends OrderCore{ public $customerRefOrder; public function __construct($id = null, $id_lang = null){ self::$definition['fields']['customerRefOrder'] = array('type' => self::TYPE_STRING); parent::__construct($id, $id_lang); } } Pour palier à ce problème , j'ai créé une méthode dans ma surcharge public function patchNewFields(){ $this->def['fields'] = array_merge($this->def['fields'], self::$definition['fields']); } Qui, permet d'ajouter les champs déclarés dans ma surcharge dans l'attribut définition, qui est utilisé ensuite pour la méthode update(). Mon hook devient donc : public function hookActionValidateOrder($params){ $params['order']->patchNewFields();//Patch Update avec Fields dans la surcharge $params['order']->customerRefOrder = $params['cart']->customerRefOrder; $params['order']->update(); } J'ai pas trouvé mieux :/ Vous en pensez quoi ? Ch. Edited July 30, 2015 by stopher (see edit history) Link to comment Share on other sites More sharing options...
stopher Posted July 30, 2015 Author Share Posted July 30, 2015 C'est quand même étonnant, lorsque je tente de mettre à jour cet attribut dans un tout autre hook .. ca fonctionne public function hookDisplayAdminOrder($params){ $order = new Order($params['id_order']); $order->customerRefOrder = "tototototototototo"; $order->update(); } Là je sèche un peu :/ 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