Форматтер – это метод, преобразовывающий данные из модели к виду, требуемому для отображения.
Для того чтобы назначить полю списка форматтер, при формировании списка отображаемых полей, необходимо вызвать метод 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 . ' ~' ;
}
|