2017-04-13 14 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

ここで私はそれをどのように解決しましたか? processSave()addupdateで呼び出され、返されるオブジェクトは常に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; 
}