【发布时间】:2012-05-10 20:02:17
【问题描述】:
我发现 CRUD 和 hasOne() 存在问题,其中 $display_field 在“添加”表单中被忽略。如果引用的模型具有“名称”字段,则正确填充 CRUD 的“添加”表单中的下拉菜单。但是,如果 hasOne() 模型使用 $display_field 参数,我希望 Add 表单显示指定的字段,但事实并非如此。它只会显示引用模型的“name”字段或“id”,而不是 $display 指定的字段。但是,添加条目后,将使用正确的 $display_field 来显示条目。所以问题出在 Add 操作的某个地方。
例如:
作者
class Model_Author extends Model_Table {
public $table='author';
function init(){
parent::init();
$this->addField('long_name');
$this->addField('DOB');
}
}
书
class Model_Book extends Model_Table {
public $table='book';
function init(){
parent::init();
$this->addField('title');
$this->hasOne('Author', 'author_id', 'long_name');
}
}
CRUD 页面。
class page_manager extends Page {
function init() {
parent::init();
$tabs=$this->add('Tabs');
$crud=$tabs->addTab('Book')->add('CRUD');
}
}
当您选择添加按钮时,作者字段将显示作者表中作者的 ID 号。但是,在您添加 Book 条目后,正确的字段(即 long_name)将用于显示现有条目。
干杯
【问题讨论】:
-
这看起来像一个错误。请在此处举报:github.com/atk4/atk4/issues
-
好的,我已将问题添加到 git hub。干杯。
-
Model_Author 中缺少的
$title_field不是这里的问题吗? -
您的权利,设置 $title_field 将解决问题,但它是一种解决方法。我希望 hasOne() 中的 $display_field 参数能够覆盖这种行为。你怎么看?
标签: php frameworks atk4