2017-04-13 48 views
0

我在Prestashop 1.6中创建了一个模块,管理员可以在其中设置配额潜水组和类别。下面的表:PrestaShop:如何获取类别树视图中选定类别的ID?

CREATE TABLE quota 
(
    id_quota INT PRIMARY KEY AUTO_INCREMENT, 
    id_group INT NOT NULL, 
    max_amount_per_order INT NOT NULL, 
    max_amount_per_month INT NOT NULL 
); 

CREATE TABLE quota_category 
(
    id_quota_category BIGINT PRIMARY KEY AUTO_INCREMENT, 
    id_category INT NOT NULL, 
    id_quota INT NOT NULL, 
); 

正如你可以看到它是在第一个表中的一个记录和许多日第二。

做到这一点我使用选择的组和树形视图的类别,所有使用窗体的帮助,我没有使用.tpl文件。

  array(
       'type' => 'select', 
       'label' => $this->l('Group'), 
       'name' => 'id_group', 
       'options' => array(
        'query' => GroupCore::getGroups($this->context->language->id), 
        'id' => 'id_group', 
        'name' => 'name', 
       ), 
       'required' => true 
      ), 
      array(
       'type' => 'categories', 
       'label' => $this->l('Category'), 
       'name' => 'id_category', 
       'tree' => [ 
        'selected_categories' => [1,2,4], 
        'disabled_categories' => null, 
        'use_search' => true, 
        'use_checkbox' => true, 
        'id' => 'id_category_tree', 
       ], 
       'required' => true 
      ), 

如预期的形式呈现,我的问题是,我不知道现在我怎么能这样对待两个表中插入表格。

你能帮忙吗?我试图找到类似的案件,但目前为止我找不到。

感谢您的任何帮助

回答

0

这是我如何解决它。在addupdate上调用processSave(),并且它返回的对象始终具有id属性。在表单中定义树视图时,为其设置一个名称。只需使用Tool :: getValue('name_of_the_treeview')。

public function processSave() { 

    $obj = parent::processSave(); 
    $categoryIds = Tools::getValue('id_categories'); 
    $id = $obj->id; 

    Db::getInstance()->execute('delete from '._DB_PREFIX_.'adnquota_category where id_adnquota = '. pSQL($obj->id)); 

    if($categoryIds) { 

     for($i = 0; $i < count($categoryIds); $i++){ 
      $rec = new AdnquotaCategoryModel(); 
      $rec->id_adnquota = $id; 
      $rec->id_category = $categoryIds[$i]; 
      $rec->add(); 
     } 
    } 

    return $obj; 
}