Php CRUD在添加期间忽略$display_字段

Php CRUD在添加期间忽略$display_字段,php,frameworks,atk4,Php,Frameworks,Atk4,我发现CRUD和hasOne()有一个问题,在“add”表单中忽略了$display\u字段。如果引用的模型具有“名称”字段,则CRUD添加表单中的下拉菜单将正确填充。但是,如果hasOne()模型使用$display\u字段参数,我希望Add表单显示指定的字段,但是它没有。它将仅显示引用模型的“名称”字段或“id”,而不是$display指定的字段。但是,添加条目后,将使用正确的$display_字段显示条目。所以问题出在Add操作的某个地方 例如: 作者 class Model_Author

我发现CRUD和hasOne()有一个问题,在“add”表单中忽略了$display\u字段。如果引用的模型具有“名称”字段,则CRUD添加表单中的下拉菜单将正确填充。但是,如果hasOne()模型使用$display\u字段参数,我希望Add表单显示指定的字段,但是它没有。它将仅显示引用模型的“名称”字段或“id”,而不是$display指定的字段。但是,添加条目后,将使用正确的$display_字段显示条目。所以问题出在Add操作的某个地方

例如:

作者

class Model_Author extends Model_Table {

public $table='author';

function init(){
  parent::init();
  $this->addField('long_name');
  $this->addField('DOB');

  }
}

}

积垢页

class page_manager extends Page {

function init() {
parent::init();

$tabs=$this->add('Tabs');

$crud=$tabs->addTab('Book')->add('CRUD');
   } 
 }
选择“添加”按钮时,作者字段将显示作者表中作者的id号。但是,添加图书条目后,将使用正确的字段(即long_name)显示现有条目


Cheers

我确实经历过同样的行为,我同意hasOne()的第三个参数(显示字段)应该覆盖model$title_字段

我找出了原因并找到了改进的方法。打开文件atk4/lib/Field/Reference.php,并在函数getModel()中添加一行以如下方式设置显示字段:

  function getModel(){
        if(!$this->model)$this->model=$this->add($this->model_name);
        if($this->display_field) $this->model->title_field=$this->display_field;
        return $this->model;
    }

在这里,它的工作方式与您预期的一样,即hasOne()将决定在CRUD的ADD表单中显示哪个字段。但是,我无法监督任何副作用或其他地方来添加此显示字段。

这看起来像个bug。请在这里报告:好的,我已经将问题添加到git hub。干杯。模型作者中的
$title\u字段
不是这里的问题吗?您的权利,设置$title\u字段可以解决问题,但这是一个解决方法。我希望hasOne()中的$display_字段参数能够克服这种行为。你怎么认为?
  function getModel(){
        if(!$this->model)$this->model=$this->add($this->model_name);
        if($this->display_field) $this->model->title_field=$this->display_field;
        return $this->model;
    }