2017-03-07 1 views
0

Ich benutze Prestashop 1.7 und entwickle ein EAN13-Generatormodul für Lernzwecke. Ich habe Probleme, meine Datenbankwerte mit den Konfigurationsfunktionen zu aktualisieren, da die Seite neu geladen wird, aber nichts aktualisiert wird.Prestashop - Konfigurationsseite aktualisiert die DB-Werte nicht

Ich möchte mit einem Formular die Werte von 'C_CODE' und 'B_CODE' für die Generierung eines EAN13 für Produkte festlegen. Hier ist der Code der Aufruf von Funktionen:

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 ''; 

} 

Und das sind meine 'renderForm'. Ich denke, es ist ein Problem mit 'currentIndex', aber ich kann es nicht lösen.

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); 

} 

Vielen Dank für Ihre Unterstützung!

Antwort

0

In getContent() Methode müssen Sie Formularmethoden in umgekehrter Reihenfolge aufrufen.

Sie müssen zunächst die Konfigurationswerte speichern und dann das Formular anzeigen.

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

Ich kopierte die postForm() vor dem renderForm() und es funktioniert. Ich meine, ich habe den Inhalt der Funktion verstanden. Ich meine, viele Module von Prestashop rufen renderForm() vor postForm() auf, also habe ich diese Methode beobachtet. Vielen Dank für die Antwort, funktioniert sehr gut! –

Verwandte Themen