Модуль Prestashop: добавить раскрывающийся список с несколькими вариантами выбора

Я работаю над модулем и хотел бы знать, как добавить несколько раскрывающихся списков с fields_options.

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

person devlogi    schedule 08.10.2014    source источник
comment
Я только что ответил на аналогичную (или ту же) проблему здесь: in-the-input" title="prestashop установить множественный выбор из модуля и получить их на входе"> stackoverflow.com/questions/27731117/ Пожалуйста, используйте это как руководство, чтобы удовлетворить требования помощника формы и создать свой сформируйте правильный путь!   -  person Jamol    schedule 02.11.2015


Ответы (2)


Вот как я делаю, если вы имеете в виду, что:

 $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'),
            )
        ),
    );
person Xavier Merlier    schedule 21.10.2014

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

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

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

как упоминалось в предыдущей ссылке, добавлено новое поле в определение модели, класс и таблицу sql.

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

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

в начале не забудьте добавить эту строку:

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

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

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

этот make хранится в БД как "1,2,3"

person PICCORO Lenz McKAY    schedule 22.09.2017