2014-10-08 3 views
0

Я работаю над модулем, и я хотел бы знать, как добавить несколько выпадающих списков с полями_опций.Модуль Prestashop: Добавить выпадающее меню multi select

 $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

Я просто ответил здесь подобное (или же) проблема: HTTP: //stackoverflow.com/questions/27731117/prestashop-set-multiple-select-from-the-module-and-get-them-in-the-input Пожалуйста, используйте это как руководство для удовлетворения требований хелпера формы и создания вашей формы Правильный способ! – Jamol

ответ

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'), 
      ) 
     ), 
    ); 
0

ответ не правильно .. из-за его не только dfined поле в базе данных, также должны захватить и хранится в особым образом значения, в этом примере я demostrate хранить как «1,2,3,6,8» с использованием одного поля

ПОЛНЫЙ КОД И ВСЕ ШАГИ нА: https://groups.google.com/forum/m/?hl=es#!topic/venenuxsarisari/z8vfPsvFFjk

здесья поставил только самые важные части ..

как упоминалось ИНТ он предыдущей ссылке, добавлена ​​новая FIEL в определении модели, класса и таблицы SQL

разрешений

этот метод, чтобы хранить в БД, как «1 , 2,3 ", так что вы можете использовать только одно поле для связи, что несколько выбранных значений, лучше использовать групповой ящик, но его довольно сложно, посмотрите на класс контроллера AdminCustomers в каталоге контроллеров prestachop, у этого есть многосегментная группа, которая использовала событие реляционной таблицы, сохраненное в одном поле

затем в хелперов виде списка массива входов определяют отборное как:

в начале DonT Foget к добавил, что линия:

// 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»

, а в полевой форме вспомогательный список входов определяет множественный выбор as:

  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»

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