Возможность поиска в справочной таблице в Agile Toolkit ATK4 CRUD
Мне нужна помощь в Agile Toolkit CRUD Grid/Form.
Я сделал таблицу / форму CRUD в Agile Toolkit для сотрудника, должности и отдела. Это было очень легко. Но сейчас у меня возникают трудности при попытке установить столбцы "Позиция" и "Отдел". Вместо того, чтобы показывать значение 'id', я хотел бы показать ссылочный текст в 'pos_desc' и 'dept_desc' соответственно.
Также в форме добавления / редактирования CRUD, он показывает только "id", а не соответствующий текст. Есть ли способ установить это, используя текст описания, но сохранить вместо этого идентификатор при коммите?
Спасибо!
Вот структура каталога проекта и некоторые фрагменты кода:
+ atk4
+ atk4-addons
+ empmaster
+ admin
+ lib
+ page
+ doc
+ lib
+ Model
+ page
+ templates
админ / Библиотека / admin.php
class Admin extends ApiFrontend {
:
:
function init(){
:
:
$this->addLocation('..',array(
'php'=>array(
'lib',
)
));
$this->addLocation('../..',array(
'php'=>array(
'atk4-addons/mvc',
'atk4-addons/misc/lib',
)
))
->setParent($this->pathfinder->base_location);
:
:
Библиотека / модель /Employee.php
class Model_Employee extends Model_Table {
public $entity_code = 'emp';
function init() {
parent::init();
$this->addField('eeid')->caption('Emp ID');
$this->addField('fnm')->caption('First Name');
$this->addField('mnm')->caption('Middle Name');
$this->addField('lnm')->caption('Last Name');
$pos=$this->addField('pos_id')->caption('Position');
$pos->refModel('Model_Postition');
$dep=$this->addField('dept_id')->caption('Department');
$dep->refModel('Model_Department');
// #1 refModel gives error if declared w/out 'Model_' prefix
// #2 Position & Department caption not on grid, but only on form
}
}
Библиотека / модель /Position.php
class Model_Position extends Model_Table {
public $entity_code = 'pos';
function init() {
parent::init();
$this->addField('pos_desc');
}
}
Библиотека / модель /Department.php
class Model_Department extends Model_Table {
public $entity_code = 'dept';
function init() {
parent::init();
$this->addField('dept_desc');
}
}
администратор / страница /index.php
$crud = $tabs->addTab('Employee Master')->add('CRUD')->setModel('Employee');
1 ответ
По умолчанию он ищет поле с именем "name" в модели. Если у вас нет этого поля, вам нужно переопределить функцию toStringSQL в Model_Position.
Смотрите этот ответ для получения дополнительной информации: