duangejian6657 2014-11-28 04:25
浏览 32
已采纳

hookActionProductUpdate在模块中调用了两次

Iam creating a module for my site,Here i have used hookActionProductUpdate hook to insert some values in ps_game_key table .When product is updated insert query is executed two times.SO 2 records are inserted instead of inserting 1 record.This seems to hookActionProductUpdate is called two times.Please Help

 class    customsupplier
{
  public function __construct()
  {
    $this->name = 'customsupplier';
    $this->tab = 'front_office_features';
    $this->version = '1.0';
    $this->author = 'Rex';
    $this->need_instance = 0;

    parent::__construct();

    $this->displayName = $this->l('Custom Supplier');
    $this->description = $this->l('Custom Supplier Module');
 }

public function install()
{
    if (!parent::install() OR
        !$this->alterTable('add') OR            
        !$this->registerHook('actionAdminControllerSetMedia') OR
        !$this->registerHook('actionProductUpdate') OR
        !$this->registerHook('displayAdminProductsExtra'))
        return false;
    return true;
}


 public function hookActionProductUpdate($params)
    {


        Db::getInstance()->insert('game_key', array(
                'id_product' => 89,
                'key_type' =>'test',
                'game_key'      => 'reee',

                'added_date_time'=> 'ssd'
        ),true);

}

}

  • 写回答

1条回答 默认 最新

  • douou8954 2014-11-28 07:05
    关注

    Hook product update may be triggered many times, because there are a lot places where method $product->save() is called.

    You can always prevent saving something more then once in a very simple way

    protected $isSaved = false;
    
    public function hookActionProductUpdate($params)
    {
       if ($this->isSaved)
          return null;
    
       $isInsert = Db::getInstance()--insert(...);
       if ($isInsert)
          $this->isSaved = true;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 ogg dd trandata 报错
  • ¥15 高缺失率数据如何选择填充方式
  • ¥50 potsgresql15备份问题
  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错