Question:
I'm creating a prestashop module which need to select 2 categories root.I tried to add 2 fields with type "categories", but on the second category tree, it has the same ID and the same NAME as the first tree.
$fields_form[1]['form'] = array(
'legend' => array(
'title' => $this->l('Setting'),
),
'input' => array(
array(
'type' => 'text',
'label' => $this->l('First column title'),
'name' => 'HCA_TITLE_COL1',
),
array(
'type' => 'categories',
'label' => $this->l('Root category'),
'desc' => $this->l('Root category of the first column.'),
'name' => 'HCA_CAT_COL1',
'tree' => array(
'id' => 'HCA_CAT_COL1',
'selected_categories' => array((int)Configuration::get('HCA_CAT_COL1')),
)
),
array(
'type' => 'text',
'label' => $this->l('Second column title'),
'name' => 'HCA_TITLE_COL2',
),
array(
'type' => 'categories',
'label' => $this->l('Root category'),
'desc' => $this->l('Root category of the second column.'),
'name' => 'HCA_CAT_COL2',
'tree' => array(
'id' => 'HCA_CAT_COL2',
'selected_categories' => array((int)Configuration::get('HCA_CAT_COL2')),
)
),
)
Answer:
Here is the solution I found after reading admin\themes\default\template\helpers\form\form.tpl
In this file, there is this condition
In this file, there is this condition
{elseif $input.type == 'categories_select'}
{$input.category_tree}
So, I used 'type' = 'categories_select' instead of 'type' = 'categories', and I generated the categories trees manually.$root = Category::getRootCategory();
//Generating the tree for the first column
$tree = new HelperTreeCategories('categories_col1'); //The string in param is the ID used by the generated tree
$tree->setUseCheckBox(false)
->setAttribute('is_category_filter', $root->id)
->setRootCategory($root->id)
->setSelectedCategories(array((int)Configuration::get('HCA_CAT_COL1')))
->setInputName('HCA_CAT_COL1'); //Set the name of input. The option "name" of $fields_form doesn't seem to work with "categories_select" type
$categoryTreeCol1 = $tree->render();
//Generating the tree for the second column
$tree = new HelperTreeCategories('categories_col2');
$tree->setUseCheckBox(false)
->setAttribute('is_category_filter', $root->id)
->setRootCategory($root->id)
->setSelectedCategories(array((int)Configuration::get('HCA_CAT_COL2')))
->setInputName('HCA_CAT_COL2');
$categoryTreeCol2 = $tree->render();
$fields_form[1]['form'] = array(
'legend' => array(
'title' => $this->l('Setting'),
),
'input' => array(
array(
'type' => 'text',
'label' => $this->l('First column title'),
'name' => 'HCA_TITLE_COL1',
),
array(
'type' => 'categories_select',
'label' => $this->l('Root category'),
'desc' => $this->l('Root category of the first column.'),
'name' => 'HCA_CAT_COL1',
'category_tree' => $categoryTreeCol1 //This is the category_tree called in form.tpl
),
array(
'type' => 'text',
'label' => $this->l('Second column title'),
'name' => 'HCA_TITLE_COL2',
),
array(
'type' => 'categories_select',
'label' => $this->l('Root category'),
'desc' => $this->l('Root category of the second column.'),
'name' => 'HCA_CAT_COL2',
'category_tree' => $categoryTreeCol2
),
)
);
No comments:
Post a Comment