2016-01-26 3 views
1

Я использую Prestashop HelperForm для создания кнопки переключателя. Статус кнопки зависит от данных, генерируемых из базы данных. Проблема в том, что кнопка всегда установлена ​​в значение false.Prestashop HelperForm: кнопка переключателя

Вот код:

$fields_form = array(
     'form' => array(
      'legend' => array(
       'title' => $this->l('Champs pour feuille de soin'), 
       'icon' => 'icon-pencil' 
      ), 

      'input' => array(
       array(
        'type' => 'hidden', 
        'name' => 'id_product', 
       ), 
       array(
        'type' => 'textarea', 
        'label' => $this->l('Label'), 
        'name' => 'contenu1' 
       ), 
       array(

        'type' => 'hidden', 
        'name' => 'id_customization_field1', 
       ), 

       array(
        'type' => 'radio', 
        'label' => $this->l('required'), 
        'name' => 'relab1', 
        'is_bool' => false, 
        'desc' => $this->l('required'), 
        'values' => array(
         array(
          'id' => 'label1_on', 
          'value' => 1, 
          'label' => $this->l('Enabled') 
         ), 
         array(
          'id' => 'label1_off', 
          'value' => 0, 
          'label' => $this->l('Disabled') 
         ) 
        ) 
       ), 
       array(
        'type' => 'textarea', 
        'label' => $this->l('Label'), 
        'name' => 'contenu2' 
       ), 
       array(

        'type' => 'hidden', 
        'name' => 'id_customization_field2', 
       ), 
       array(
        'type' => 'radio', 
        'label' => $this->l('required'), 
        'name' => 'relab2', 
        'is_bool' => false, 
        'desc' => $this->l('required'), 
        'values' => array(
         array(
          'id' => 'active_on', 
          'label' => $this->l('Enabled') 
         ), 
         array(
          'id' => 'active_off', 
          'label' => $this->l('Disabled') 
         ) 
        ) 
       ), 


       array(
        'type' => 'textarea', 
        'label' => $this->l('Label'), 
        'name' => 'contenu3' 
       ), 
       array(

        'type' => 'hidden', 
        'name' => 'id_customization_field3', 
       ), 

       array(
        'type' => 'switch', 
        'label' => $this->l('required'), 
        'name' => 'relab3', 
        'is_bool' => true, 
        'desc' => $this->l('required'), 
        'values' => array(
         array(
          'id' => 'label3_on', 
          'value' => 1, 
          'label' => $this->l('Enabled') 
         ), 
         array(
          'id' => 'label3_off', 
          'value' => 0, 
          'label' => $this->l('Disabled') 
         ) 
        ) 
       ), 


       array(
        'type' => 'textarea', 
        'label' => $this->l('Label'), 
        'name' => 'contenu4' 
       ), 
       array(

        'type' => 'hidden', 
        'name' => 'id_customization_field4', 
       ), 

       array(
        'type' => 'checkbox', 
        'label' => $this->l('Required'), 
        'name' => 'label4', 
        'class' => 't', 
        'multiple' => true, 
        'values' => array(
         'query' => array($label3), 
         'id' => 'label4', 
         'name' => 'label4', 
         'expand' => array(
          'default' => 'show', 
          'show' => array('text' => $this->l('show'), 'icon' => 'plus-sign-alt'), 
          'hide' => array('text' => $this->l('hide'), 'icon' => 'minus-sign-alt') 
         ), 
        ) 
       ), 


      ), 
      'submit' => array(
       'title' => $this->l('Save'), 
       'name' => $this->l('submitAddproduct'), 
      ) 
     ), 
    ); 

    $helper = new HelperForm(); 
    $helper->show_toolbar = false; 
    $helper->table = $this->table; 
    $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT')); 
    $helper->default_form_language = $lang->id; 
    $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; 
    $helper->identifier = $this->identifier; 
    $helper->submit_action = 'submitUpdate'; 
    $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false) . '&configure=' . $this->name . '&tab_module=' . $this->tab . '&module_name=' . $this->name; 
    $helper->token = Tools::getAdminTokenLite('AdminModules'); 
    $helper->tpl_vars = array(
     $helper->fields_value['id_product'] = Tools::getValue('id_product'), 
     'relab4' => 1, 

     'languages' => $this->context->controller->getLanguages(), 
     'id_language' => $this->context->language->id 
    ); 

    $helper->fields_value['contenu1'] = $contenu1; 
    $helper->fields_value['contenu2'] = $contenu2; 
    $helper->fields_value['contenu3'] = $contenu3; 
    $helper->fields_value['contenu4'] = $contenu4; 
    $helper->fields_value['relab1'] = (int)$relab1; 
    $helper->fields_value['relab2'] = (int)$relab2; 
    $helper->fields_value['relab3'] = (int)$relab3; 
    $helper->fields_value['relab4'] = (int)$relab4; 
    $helper->fields_value['id_customization_field1'] = $id_customization_field1; 
    $helper->fields_value['id_customization_field2'] = $id_customization_field2; 
    $helper->fields_value['id_customization_field3'] = $id_customization_field3; 
    $helper->fields_value['id_customization_field4'] = $id_customization_field4; 


    return $helper->generateForm(array($fields_form)); 
+0

Извините мою ошибку я была и ошибка assining в $ relab vaiables спасибо ребята за ваше время! –

ответ

0

Я предполагаю, что у вас есть эта часть кода тоже ($helper Ваш HelperForm() объект):

$helper->tpl_vars = array(
    'fields_value' => $this->getConfigFieldsValues(), 
    'languages' => $this->context->controller->getLanguages(), 
    'id_language' => $this->context->language->id 
); 

Так с помощью этой функции вы должны возвращать relab2 значение:

public function getConfigFieldsValues() 
{ 
    return array(
     'relab2' => 1 // your value, 1 or 0 
     // other form values 
    ); 
} 
0

Вам необходимо предоставить y наши значения формы для объекта HelperForm.

Вот пример:

$fields_form = array(
    'legend' => array(
     'title' => $this->('My Form'), 
    ), 
    'input' => array(
     'type' => 'switch', 
     'label' => $this->l('required'), 
     'name' => 'relab2', 
     'is_bool' => true, 
     'desc' => $this->l('required'), 
     'values' => array(
      array(
       'id' => 'label2_on', 
       'value' => 1, 
       'label' => $this->l('Enabled') 
      ), 
      array(
       'id' => 'label2_off', 
       'value' => 0, 
       'label' => $this->l('Disabled') 
      ) 
     ) 
    ), 
); 

$val = getValFromDB(); //example 

$helper = new HelperForm(); 
$helper->module = $this; 
$helper->name_controller = 'example'; 
$helper->title = $this->displayName; 
$helper->submit_action = 'example_action'; 
// [...] 
// [...] 
// Here you provide your values 
$helper->fields_value = array('relab2' => $val); 

return $helper->generateForm(array(array('form' => $fields_form))); 
+0

Уже сделано это, но еще есть кнопка включения деактивируется –

+0

Тогда не могли бы вы изменить свой вопрос на весь ваш код? ? –

+0

thnks для вашего времени, вы можете увидеть весь скрипт –

0

Привет Я была такая же проблема на PrestaShop 1.6 и 1.7, и я, наконец, понял, проблема, поэтому я поделюсь своими выводами с вами, ребята.

Так вот мой переключатель:

array(
    'type' => 'switch', 
    'label' => $this->trans('Captcha Test Mode', array(), 'Admin.Shipping.Feature'), 
    'name' => 'CORE_CAPTCHA_TEST_MODE', 
    'required' => false, 
    'class' => 't', 
    'is_bool' => true, 
     'values' => array(
      array(
       'id' => 'active_on', 
       'value' => 1, 
       'label' => $this->trans('Enabled', array(), 'Admin.Global'), 
       ), 
      array(
       'id' => 'active_off', 
       'value' => 0, 
       'label' => $this->trans('Disabled', array(), 'Admin.Global'), 
       ), 
     ), 

Как вы можете видеть, что это должно иметь явное имя CORE_CAPTCHA_TEST_MODE.

Где вещи становятся интересными в getConfigFormValues ​​() метод:

protected function getConfigFormValues() 
{ 
    return array(
     'CORE_CAPTCHA_TEST_MODE' => Tools::getValue('CORE_CAPTCHA_TEST_MODE', Configuration::get('CORE_CAPTCHA_TEST_MODE', true)), 
    ); 
} 

В отличии от любого другого типа поля, где простая конфигурация :: получить будет достаточно, чтобы установить значение в поле, когда форма грузятся переключателе нам нужно добавить инструменты :: GetValue (...

Смежные вопросы