我正在使用Prestashop 1.7,我正在开发一个用于学习目的的EAN13发生器模块。 我无法使用配置功能更新数据库上的值,因为它会重新加载页面但不会更新任何内容。
我想用表格设置' C_CODE'和' B_CODE'用于生成产品的EAN13。 这是调用函数的代码:
public function getContent() {
return $this->renderForm().$this->postForm();
}
public function postForm() {
if (Tools::isSubmit('submitConf')) { //Cambiamos valores
Configuration::updateValue('C_CODE', Tools::getValue('C_CODE_'));
Configuration::updateValue('B_CODE', Tools::getValue('B_CODE_'));
return $this->displayConfirmation($this->l('Settings changed'));
}
return '';
}
这些是我的#renderForm'。我认为这是关于currentIndex'的一个问题,但我无法解决它。
public function renderForm() {
// Get default language
$default_lang = (int)Configuration::get('PS_LANG_DEFAULT');
// Init fields from an array
$fields_form[0]['form'] = array(
'legend' => array(
'title' => $this->l('Configuración del EAN'),
),
'input' => array(
array(
'type' => 'text',
'label' => $this->l('Código del país'),
'name' => 'C_CODE',
'size' => 10,
'required' => true
),
array(
'type' => 'text',
'label' => $this->l('Código de la empresa'),
'name' => 'B_CODE',
'size' => 20,
'required' => true
)
),
'submit' => array(
'title' => $this->l('Generar EAN13'),
'class' => 'btn btn-default pull-center'
)
);
$helper = new HelperForm();
$helper->module = $this;
$helper->name_controller = $this->name;
$helper->token = Tools::getAdminTokenLite('AdminModules');
$helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->name;
// Language
$helper->default_form_language = $default_lang;
$helper->allow_employee_form_lang = $default_lang;
// title and Toolbar
$helper->title = $this->displayName;
$helper->show_toolbar = true; // false -> remove toolbar
$helper->toolbar_scroll = true; // yes - > Toolbar is always visible on the top of the screen.
$helper->submit_action = 'submitConf';
$helper->toolbar_btn = array(
'save' =>
array(
'desc' => $this->l('Save'),
'href' => AdminController::$currentIndex.'&configure='.$this->name.'&save'.$this->name.
'&token='.Tools::getAdminTokenLite('AdminModules'),
),
'back' => array(
'href' => AdminController::$currentIndex.'&token='.Tools::getAdminTokenLite('AdminModules'),
'desc' => $this->l('Back to list')
)
);
$helper->fields_value['C_CODE'] = Configuration::get('C_CODE');
$helper->fields_value['B_CODE'] = Configuration::get('B_CODE');
//TODO: Fill with toolbars and more options
return $helper->generateForm($fields_form);
}
非常感谢您的支持!
答案 0 :(得分:0)
在getContent()
方法中,您需要以相反的顺序调用表单方法。
您需要先保存配置值,然后显示表单。
public function getContent() {
return $this->postForm().$this->renderForm();
}