Как я могу автоматически заполнить раскрывающийся список данными из таблицы сахара?

Я хочу создать раскрывающийся список в пользовательском модуле сахара и автоматически заполнить его, используя данные из базы данных сахара. Параметры раскрывающегося списка должны быть получены из таблицы. Столбец имени будет отображаться как отображаемый текст параметра, а идентификатор — как значение параметра.

Кто-нибудь может мне с этим помочь?


person sabna    schedule 03.03.2012    source источник


Ответы (2)


Все раскрывающиеся списки встроены в языковой файл в custom/include/language и хранятся в массиве с именем $app_list_strings. По сути, вы должны запустить свой запрос в языковом файле, а затем использовать результаты для построения массива для этого раскрывающегося списка.

Если вы просмотрите существующие примеры, вы увидите что-то вроде этого.

       $GLOBALS['app_list_strings']['drop_down_name'] = array(
       'dropdown_value'=>'Dropdown Display',
       'dropdown_value2'=>'Dropdown Display2',
       );

Если вы сделаете следующее:

       $new_array = array();
       while($row = $db->fetchByAssoc($result)) {
          $new_array[$row['key']] = $row['value'];
       }

       $GLOBALS['app_list_strings']['dropdown'] = $new_array;

Вы выполните то, что вам нужно

person frosty    schedule 06.03.2012
comment
я думаю, $db = DBManagerFactory::getInstance($instanceName); $myQuery = выберите PRO_CODIGO, PRO_DESCRIP из сахараcm.PROVINCIAS; $Result=$db-›запрос($myQuery); отсутствует в вашем ответе. - person Rodniko; 24.03.2013
comment
Вы правы, я не включил весь запрос для получения данных, а только все с этого момента. - person frosty; 29.03.2013

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

Определение поля:

$dictionary['MODULENAME']['fields']['FIELDNAME']['function'] = 'getActiveReleases'; 

Функция:

function getActiveReleases()
{
    $query = "SELECT id, name FROM releases where deleted=0 and status='Active' order by list_order asc";
    $result = $GLOBALS['db']->query($query, false);

    $list = array();
    $list['']='';
    while (($row = $GLOBALS['db']->fetchByAssoc($result)) != null) {
        $list[$row['id']] = $row['name'];
    }

    return $list;
}
person Star    schedule 03.11.2017