Тема: Вывод колонки с информацией из доп.полей пользователей

Здравствуйте! Подскажите, пожалуйста, каким образом вывести дополнительные поля (или одно из полей) пользователей в колонку в таблице со списком пользователей. И возможна ли сортировка по добавленному полю.

Re: Вывод колонки с информацией из доп.полей пользователей

Более конкретно укажите, какая колонка Вам нужна и с какими сведениями?

Re: Вывод колонки с информацией из доп.полей пользователей

Поля во вкладке "Дополнительные сведения"
http://joxi.ru/DrlQdB6hgR1PmP
Которые добавляются в настройках модуля
http://joxi.ru/8An6KbdSJaeVAO

Re: Вывод колонки с информацией из доп.полей пользователей

Для данной задачи Ваши поля не подойдут. Т.к. в Вашем случае они в БД хранятся в сериализованном виде (зашифрованы). Вам надо написать свой доп модуль и добавить поля к объекту пользователя, тогда в админке можно будет вывести колонку.
О том как добавить поле объекту написано здесь:
http://forum.readyscript.ru/topic/287/k … adyscript/

А потом, уже расширять колонку из своего модуля.

Re: Вывод колонки с информацией из доп.полей пользователей

Спасибо за ответ, Александр! В документации разработчика менее подробно описано о добавлении полей, чем в Вашем посте. Именно так и стал делать модуль с допинформацией об источниках перехода (используя Sourcebuster.js).

Не нашел мануал по добавлению колонок в таблицу, можете привести пример?

Re: Вывод колонки с информацией из доп.полей пользователей

Разобрался с добавлением.

$helper['table']->getTable()->addColumn(
    new TableType\String('region_id', 'Регион', array('Sortable' => SORTABLE_BOTH, 'hidden' => false)),6);
$lines = $helper['filter']->getContainer()->getLines();
$lines[0]->addItem(   
   new Filter\Type\Select('region_id', 'Регион', array('' => 'Любой регион')+ \Shop\Model\RegionApi::staticSelectList()) ,0);

Появились другие вопросы)
Заметил, что сортировка идет не по региону, а по его id. Аналогичная ситуация, кстати, и у каталога товаров.
Например, после Hewlett-Packard идет Lenovo, а не HTC.

И не работает фильтр. Просто опять выводится список пользователей.

Re: Вывод колонки с информацией из доп.полей пользователей

Ну во первых посмотрите какие значения в списке регионов со значениями. Вероятно просто неверные значения в фильтр подставляются.
По сортировке... Сортировка запоминается в куках. Т.е. Вам надо выставить сортировку сначала нажав на нужную колонку и она запомнится.

Re: Вывод колонки с информацией из доп.полей пользователей

По коду в селекте в качестве value идут id регионов из регионов доставки.
Вот кусок кода:

<select name="[region_id]">
<option value="1">Россия</option>
<option value="18">&nbsp;&nbsp;&nbsp;&nbsp;Адыгея</option>
<option value="17">&nbsp;&nbsp;&nbsp;&nbsp;Алтай</option>
<option value="10">&nbsp;&nbsp;&nbsp;&nbsp;Алтайский край</option>
<option value="16">&nbsp;&nbsp;&nbsp;&nbsp;Амурская область</option>
<option value="15">&nbsp;&nbsp;&nbsp;&nbsp;Архангельская область</option>

id передается:

mod_controller=users-ctrl&%5Bregion_id%5D=10&f%5Blogin%5D=&f%5Be_mail%5D=&f%5Bdispname%5D=&f%5Bgroup%5D=&f%5Bname%5D=&f%5Bsurname%5D=&f%5Bmidname%5D=&f%5Bdateofreg_from%5D=&f%5Bdateofreg_to%5D=

Смущает то, что name="[region_id]", а всех остальных фильтров добавляется префикс f, например name="f[group_id]".

Таблица Users дополнена 2 полями

 $orm_user->getPropertyIterator()->append(array( //Добавляем свойства к объекту
            t('Основные'), //Закладка, появится в форме редактирования товара
             
           
            'region_id' => new \RS\Orm\Type\Integer(array(
                      
                        'default' => 1,   
                        'index' => true,
                        'description' => t('Регион'),
                        'list' => array(array('\Shop\Model\RegionApi','staticSelectList'))
                    
                    )),
                        
             t('Служебная информация'), //Закладка, появится в форме редактирования товара
             
           
            'source_info' => new \RS\Orm\Type\String(array(
                        'maxLength' => '255',
                        'description' => t('Источник перехода'))
                        )  
                        
        ));

По сортировке. Я имел ввиду,что сортировка идет по возрастанию, убыванию id бренда, а не его наименованию. Возможно ли сделать сортировку именно по наименованию?

Re: Вывод колонки с информацией из доп.полей пользователей

Да, дело именно в префиксе, т.к. передаётся массив параметрами для поиска и соответственно значение для поиска. Для объекта фильтра используйте функцию setFieldPrefix('f')

10

Re: Вывод колонки с информацией из доп.полей пользователей

 $filter=new Filter\Type\Select('region_id', 'Регион', array('' => 'Любой регион')+ array('NULL' => 'Без региона') + \Shop\Model\RegionApi::staticSelectList());
        $filter->setFieldPrefix('f');
        
        $lines[0]->addItem( $filter,0);  

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

Re: Вывод колонки с информацией из доп.полей пользователей

setFieldPrefix - это метод от родителя данного класса AbstructFilter

12

Re: Вывод колонки с информацией из доп.полей пользователей

Вероятно дело в статическом кеше. Попробуйте так:

$helper['table']->getTable()->addColumn(
    new TableType\String('region_id', 'Регион', array('Sortable' => SORTABLE_BOTH, 'hidden' => false)),6);
$container = $helper['filter']->getContainer()
$lines=$container->getLines();
$lines[0]->addItem(   
   new Filter\Type\Select('region_id', 'Регион', array('' => 'Любой регион')+ \Shop\Model\RegionApi::staticSelectList()) ,0);

$container->cleanItemsCache();

Повысить оценку +2 Понизить оценку

13

Re: Вывод колонки с информацией из доп.полей пользователей

Спасибо большое! Заработало! Дело было в статическом кеше.