我正在研究一个模块,我想知道如何使用fields_options添加多个下拉列表。
$this->fields_options = array(
'Test' => array(
'title' => $this->l('Test'),
'icon' => 'delivery',
'fields' => array(
'IXY_GALLERY_CREATION_OCCASION' => array(
'title' => $this->l('DropdownList'),
'type' => 'select',
'multiple' => true , // not working
'identifier' => 'value',
'list' => array(
1 => array('value' => 1, 'name' => $this->l('Test 1 ')),
2 => array('value' => 2, 'name' => $this->l('Test 2)'))
)
),
),
'description' =>'',
'submit' => array('title' => $this->l('Save'))
)
);
答案 0 :(得分:0)
如果您的意思是:
,我就是这样做的 $combo = $this->getAddFieldsValues();
$fields_form = array(
'form' => array(
'legend' => array(
'title' => $this->l('Title'),
'icon' => 'icon-cogs'
),
'input' => array(
array(
'type' => 'select',
'lang' => true,
'label' => $this->l('Nom'),
'name' => 'nom_matiere',
'options' => array(
'query' => $combo[0],
'id' => 'id_option',
'name' => 'name'
)
),
array(
'type' => 'select',
'lang' => true,
'label' => $this->l('Nom'),
'name' => 'name',
'options' => array(
'query' => $combo[1],
'id' => 'id_option',
'name' => 'name'
)
),
),
),
'submit' => array(
'title' => $this->l('Save'),
'name' => $this->l('updateData'),
)
),
);
答案 1 :(得分:0)
答案是不正确的..由于它不仅在数据库中定义了字段,还必须以特殊的方式捕获和存储值,在这个例子中我说明存储为" 1,2,3, 6,8-"使用单个字段
完整的代码和所有步骤:https://groups.google.com/forum/m/?hl=es#!topic/venenuxsarisari/z8vfPsvFFjk
这里我只放了最重要的部分..
正如前面提到的那样链接,在模型定义,类和表sql中添加了新的fiel此方法允许将数据库存储为" 1,2,3"因此,您只能使用一个字段来关联多个选定的值,更好的可能是使用groupbox 但是非常困难,请查看AdminCustomers prestachop的controllers目录中的controller类,它有一个多选组,它使用存储在单个字段中的关系表事件
然后在帮助器表单中,列表输入数组将select定义为:
在开始时不要忘记添加该行:// aqui el truco de guardar el multiselect como una secuencia separada por comas, mejor es serializada pero bueh
$this->fields_value['id_employee[]'] = explode(',',$obj->id_employee);
这个$ obj是从该对象转到编辑时加载的先前存储值的表示,获取多选的字段的存储值,存储为" 1,3,4,6& #34;
并在字段形式的输入辅助列表中将选择倍数定义为:
array(
'type' => 'select',
'label' => $this->l('Select and employee'),
'name' => 'id_employee_tech',
'required' => false,
'col' => '6',
'default_value' => (int)Tools::getValue('id_employee_tech'),
'options' => array(
'query' => Employee::getEmployees(true), // el true es que solo los que estan activos
'id' => 'id_employee',
'name' => 'firstname',
'default' => array(
'value' => '',
'label' => $this->l('ninguno')
)
)
),
然后再覆盖后期处理
public function postProcess()
{
if (Tools::isSubmit('submitTallerOrden'))
{
$_POST['id_employee'] = implode(',', Tools::getValue('id_employee'));
}
parent::postProcess();
}
这个存储在数据库中作为" 1,2,3"