Центр документации
Карта сайта

Создай визитку сам!


Самоучитель по интеграции дизайна и настройке Amiro.CMS на примере демонстрационной версии пакета Визитка »


Список - определение набора и порядка полей

Пример добавления полей при инициализации списка.

class AmiClean_AmiSample_ListAdm extends Hyper_AmiClean_ListAdm{
}
 
class AmiClean_AmiSample_ListViewAdm extends Hyper_AmiClean_ListViewAdm{
 
    protected $orderColumn = 'nickname';
 
    protected $orderDirection = 'asc';
 
    public function __construct(){
 
        parent::__construct();
 
        // Init columns
        $this
            ->addColumnType('id', 'hidden')
            ->addColumn('nickname')
            ->addColumn('birth')
            ->addColumnType('age', 'int')
            ->setColumnTensility('nickname')
            ->addSortColumns(
                array(
                    'public',
                    'nickname',
                    'birth'
                )
            );
    }
}

Объяснение кода

Наследник контроллера компоненты пустой, поскольку мы пока не изменяем поведение по умолчанию.

class AmiClean_AmiSample_ListAdm extends Hyper_AmiClean_ListAdm{
}

Свойства $orderColumn и $orderDirection класса отображения задают сортировку списка по умолчанию (поле и направление сортировки соответственно).

protected $orderColumn = 'nickname';
 
protected $orderDirection = 'asc';

В данном случае будет применена сортировка по полю nickname по возрастанию.

Добавляем столбцы списка отображающие поля nickname, birth, age модели. Поле id так же будет передано в список, но визуально выводиться не будет. Полю age задан числовой формат.

$this
    ->addColumnType('id', 'hidden')
    ->addColumn('nickname')
    ->addColumn('birth')
    ->addColumnType('age', 'int')

Поле nickname объявляется как "тянущееся", т.е. будет иметь переменную ширину столбца.

->setColumnTensility('nickname')

Добавляем возможность сортировки по столбцам public, nickname, birth

->addSortColumns(
     array(
         'public',
         'nickname',
         'birth'
     )
 );

Порядок полей

Изначально, поля добавляются в список в том порядке, в котором выполнялись операции добавления (addColumn).

Для задания порядка полей используются позиции (placeholders).

Механизм позиционирования, описанный далее, справедлив так же и для управления порядком полей компонент фильтра и формы.

Позиция – это место в последовательности, относительно которого могут быть размещены элементы управления и другие позиции. Механизм применяется для того, чтобы создать единообразие расположения элементов управления.

Позиции бывают 2 видов: позиции элементов и секции. Секцию следует понимать, как логическую группу элементов. Секция отличается от позиции элемента тем, что имеет начало и конец.

Секции и позиции элементов описываются в классе отображения в массиве $aPlaceholders.

Стандартный массив позиций списка:

protected $aPlaceholders = array(
    '#list_header',
        '#flags', 'position', 'public', 'flags',
        '#common', 'date_created', 'cat_header', 'common',
        '#columns', 'columns',
        '#actions', 'front_view', 'edit', 'actions',
    'list_header'
);

Элементы массива вида "#name" и "name" определяют начало и конец секции. Элементы массива не имеющие одноименного предшествующего элемента начинающегося символом #, являются позициями элемента.

  • Секция list_header - определяет порядок столбцов списка.
  • Секция flags - содержит порядок столбцов действий перемещения и публикации.
  • В секцию columns попадают столбцы полей, добавленные методом addColumn.
  • Секция actions определяет порядок расположения иконок стандартных действий.

При добавлении поля, в массиве $aPlaceholders отображения создается одноименная позиция элемента.

Большинство методов добавления полей компонент позволяют добавить поле относительно какой-либо позиции.

Пример

$this->addColumn('nickname', 'datefrom.before|seo.begin|columns.end');

В данном примере добавляется поле nickname, позиция которого определяется по следующему правилу:

  • Если есть позиция datefrom, то новую позицию добавляют перед ней
  • Если позиции datefrom нет, но есть секция seo, то добавляем позицию в ее начало
  • Если ни позиции datefrom нет и нет секции seo, то добавляем позицию в конце секции columns

Рассмотрим подробнее возможные относительные положения.

У позиции элемента есть 2 относительных положения для добавления:

  • перед позицией элемента (before);
  • после позиции элемента (after).

В отличие от позиции элемента, для секции существуют 4 относительных положения для добавления:

  • перед началом секции (before);
  • в начале секции (start);
  • в конце секции (end);
  • после секции (after).

Следует понимать:

  • позиция может быть не используемой, т. е. ей не будет соответствовать элемента управления;
  • имя позиции и секции уникально; при добавлении позиции с именем, которое уже есть в списке позиций, она будет добавлена взамен существующей.

Заголовки

Заголовки столбцов описываются в файле локализации списка "_local/_admin/templates/lang/60/{$modId}_list.lng".

Имена переменных должны соответствовать формату "list_col_имяСтолбца".

Например:

%%list_col_age%en%%
Age
%%list_col_age%ru%%
Возраст
 
%%list_col_nickname%en%%
Nickname
%%list_col_nickname%ru%%
Имя
 
%%list_col_birth%en%%
Birth
%%list_col_birth%ru%%
Дата рождения
Установка и настройка Руководство пользователя Интеграция дизайна Разработчикам (API)
 2000 – 2021 © Amiro.CMS Все права защищены.