2017-02-15 17 views
1

Я создал модуль presta и использовал actionCartSave. Но когда я печатаю строку в функции hookActionCartSave, она отображает двойной результат Я не знаю, почему, можете ли вы объяснить мне это?Prestashop hookActionCartSave функция работает 2 раза?

Мой код:

 

    public function hookActionCartSave() 
    { 
     if (!$this->active || !Validate::isLoadedObject($this->context->cart) || !Tools::getIsset('id_product')) return; 

     print_r('expression'); 
    } 

Результат:

 

    expressionexpression 

Спасибо

+0

Тележка сохраняется более одного времени, в течение навигация, поэтому крючок называется более одного раза :) – sarcom

+0

Могу ли я запустить его 1 раз? – phinq

ответ

1

Крюк ActionCartSave называется в add и update метод Cart класса.

public function add($autodate = true, $null_values = false) 
{ 
    /* ... */ 
    Hook::exec('actionCartSave'); 

    return $return; 
} 
 
public function update($null_values = false) 
{ 
    /* ... */ 
    Hook::exec('actionCartSave'); 

    return $return; 
} 

Так что, если вы будете искать в различном контроллере вы обнаружите, что тележка сохраняются несколько раз, так что крючок называется более одного раза :)

+0

Как я могу запустить его один раз (только)? – phinq

+0

Я создаю переменную и устанавливаю статус снова, кажется, что он может нормально работать. Спасибо – phinq

+0

Извините за поздний ответ, вы не можете запустить его один раз, потому что это не под вашим контролем :). Я рад слышать, что вы нашли решение, пожалуйста!) – sarcom