Поле ссылки в форме
Я думаю, что я не понимаю эталонное поле.
У меня простая форма
<?php
class page_prueba extends Page {
function init(){
parent::init();
$p=$this;
$f=$p->add('Form');
$f->setSource('ticket');
$f->addField('line','texto')->validateNotNull();
$f->addField('text','detalle')->validateNotNull();
$c=$p->add('Model_Usuario');
$f->addField('reference','usuario')->setValueList($c)->validateNotNull();
}
}
И у меня есть модель пользователя
<?php
class Model_Usuario extends Model_Table {
public $entity_code='usuario';
public $table_alias='u';
function defineFields(){
parent::defineFields();
$this->addField('nombre');
$this->addField('password');
$this->addField('email');
$this->addField('telefono');
$this->addField('descripcion');
$this->addField('interno');
$this->addField('esadmin');
}
}
?>
Когда я запускаю страницу примера, я попадаю в выпадающий список (значения параметров), в котором отображаются значения идентификаторов (первичный ключ), но в этих выпадающих списках я хочу видеть поле имени (nombre).
Может быть, я что-то упустил.
Любая помощь будет признательна.
спасибо Алехандро
1 ответ
Решение
По умолчанию модель отображает поле "имя". Есть несколько способов настроить это
- определить поле имени как рассчитанное
- переопределить Model_Usuario::toStringSQL()
- начиная с 4.1 вы также можете определить имя поля через свойство.
Вы, вероятно, должны идти после 2, вот пример:
public function toStringSQL($source_field, $dest_fieldname, $expr = 'name') {
// return parent::tostringSQL($source_field,$dest_fieldname, 'date')
return 'concat(name," ",surname) as ' . $dest_fieldname;
}