PrestaShop:如何获取类别树视图中 select 类别的 ID?
PrestaShop: how to get the IDs of the select categories in a Category Treeview?
我正在 Prestashop 1.6 中制作一个模块,管理员可以在其中设置配额潜水组和类别。下表:
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,
);
如您所见,第一个 table 有一个记录,第二个有多个记录。
为此我使用 select 的表格和类别的树视图,全部使用表格帮助,我没有使用 .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
),
表单按预期呈现,我的问题是我现在不知道如何处理要在两个 table 中插入的表单。
你能帮忙吗?我试图找到类似的案例,但到目前为止我找不到。
感谢您的帮助
我是这样解决的。 processSave()
在 add
和 update
上被调用,它 returns 的对象总是有 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;
}
我正在 Prestashop 1.6 中制作一个模块,管理员可以在其中设置配额潜水组和类别。下表:
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,
);
如您所见,第一个 table 有一个记录,第二个有多个记录。
为此我使用 select 的表格和类别的树视图,全部使用表格帮助,我没有使用 .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
),
表单按预期呈现,我的问题是我现在不知道如何处理要在两个 table 中插入的表单。
你能帮忙吗?我试图找到类似的案例,但到目前为止我找不到。
感谢您的帮助
我是这样解决的。 processSave()
在 add
和 update
上被调用,它 returns 的对象总是有 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;
}