Я пытаюсь раскрасить раскрывающееся поле, и я не уверен, что выбрал правильный подход. У меня есть эта модель, для которой поле «тип» должно быть выпадающим, который отображает строку, но хранит целое число. Чтобы отформатировать вывод, я поместил в Grid субклассы как
class Model_Member extends MVCTable {
function init() {
parent::init();
$this->addField('type')
->type('list')
->display(array('grid'=>'mbrtype'))
->caption('Member Type')
->listData(array('Guest','Associate','Full'))
;
}
}
Чтобы отформатировать вывод, я подклассифицировал Grid как
class Grid extends Grid_Basic {
function format_mbrtype($field) {
$mt=array('Guest','Associate','Full');
$this->current_row[$field]=$mt[$this->current_row[$field]];
}
}
Когда я загружаю записи об участниках моего администратора CRUD, я вижу это поле, заполненное числами вместо отформатированных данных. Я ожидал, что контроллер получит значения, переданные в display (), и выполнит мой форматер вместо стандартного.
Я что-то здесь упускаю? Я пролистал источник, и мое лучшее предположение относительно того, где что-то идет не так, находится в MVCGrid.php, строка 45. Вызов formatType () для объекта Controller не включает имя поля в качестве третьего аргумента, который заставляет его игнорировать отображения набора отображения поля и возвращаться к массиву $ type_correspondence контроллера.
Конечно, я работаю с ATK4 только пару недель, так что, возможно, я просто неправильно связал вещи. Это правильный способ реализации пользовательского форматера?