2017-04-13 118 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; 
}