Prestashop - 配置页面不会更新DB值

时间:2017-03-07 12:21:10

标签: php database forms prestashop

我正在使用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);

}

非常感谢您的支持!

1 个答案:

答案 0 :(得分:0)

getContent()方法中,您需要以相反的顺序调用表单方法。

您需要先保存配置值,然后显示表单。

public function getContent() {
    return $this->postForm().$this->renderForm();
}