Форматтер – это метод, преобразовывающий данные из модели к виду, требуемому для отображения.
Для того чтобы назначить полю списка форматтер, при формировании списка отображаемых полей, необходимо вызвать метод formatColumn.
Пример:
$this->formatColumn('nickname', array($this, 'fmtTruncate'));
|
Первый параметр – название поля модели, второй – callback, третьим параметром может идти массив параметров форматтера, но, в данном примере, используются параметры по умолчанию.
В данный момент существует несколько стандартных callback-методов, описанных в API, они начинаются с префикса fmt.
| Метод | Описание |
|---|
fmtTruncate | Усечение строки до заданной длины. Возможные параметры: - length - длина строки;
- doSaveWords - не разрывать слова при обрезании строки;
- doStripTags - вырезать HTML тэги;
- doHTMLEncode - кодирование всех спец. символов в их HTML представления;
- tail - символы, которые необходимо добавить в конец обрезанной строки.
|
| fmtHTMLEncode | кодирование всех спец. символов в их HTML представления. |
| fmtStripTags | вырезать HTML тэги. |
| fmtLocaleCaption | Заменить значение поля на соответствующую языковую переменную. |
| fmtDateTime | Форматировать mysql дату в локализованный формат. Возможные аргументы: - format - формат преобразования.
|
| fmtHumanDateTime | Расширенный вариант форматтера fmtDateTime. При выводе даты использует понятия "Сегодня", "Вчера". |
| fmtColIcon | Представить значение поля в виде иконки. Возможные аргументы: - name - используется при построении css класса элемента col-icon-{name};
- caption - подсказка к иконке;
- has_inactive - иконка может иметь активное и неактивное состояние;
- caption_inactive - подсказка к неактивной иконке.
|
Существует возможность добавления собственных форматтеров, с использованием метода AMI_ModListView::formatColumn.
Рекомендуется для собственных форматтеров также использовать префикс fmt.
Пример добавления стандартных и пользовательского форматтеров
class AmiClean_AmiSample_ListViewAdm extends Hyper_AmiClean_ListViewAdm{
public function __construct(){
parent::__construct();
$this
->addColumnType('id', 'hidden')
->addColumn('nickname')
->addColumn('birth')
->addColumnType('age', 'int');
$this->formatColumn(
'nickname',
array($this, 'fmtTruncate'),
array(
'length' => 50
)
);
$this->formatColumn(
'birth',
array($this, 'fmtDateTime'),
array(
'format' => AMI_Lib_Date::FMT_DATE
)
);
$this->formatColumn(
'birth',
array($this, 'fmtCustom')
);
}
protected function fmtCustom($value, array $aArgs){
return '~ ' . $value . ' ~';
}
}
|
Объяснение кода
Усечение значений поля nickname до максимальной длины в 50 символов.
$this->formatColumn(
'nickname',
array($this, 'fmtTruncate'),
array(
'length' => 50
)
);
|
Вывести значения поля birth в виде локализованной даты.
$this->formatColumn(
'birth',
array($this, 'fmtDateTime'),
array(
'format' => AMI_Lib_Date::FMT_DATE
)
);
|
Добавление пользовательского форматтера для поля birth, который обрамит даты символами "~".
public function __construct(){
$this->formatColumn(
'birth',
array($this, 'fmtCustom')
);
}
protected function fmtCustom($value, array $aArgs){
return '~ ' . $value . ' ~';
}
|