Jump to content

Methode update() dans un hook


Recommended Posts

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

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 by stopher (see edit history)
Link to comment
Share on other sites

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...