错误的表displayField被烘烤,即使一个名称getter包含在实体



这是当前在我的表中设置的displayField:

$this->setDisplayField('id');

我需要它是:

$this->setDisplayField('name');

但是,我的数据库表有双语字段,例如name_enname_fr,其中我使用getter在实体中填充name:

protected $_virtual = ['name'];
protected function _getName()
{
if (Configure::read('wetkit.lang') == 'fr'){
return $this->_properties['name_fr'];
} else {
return $this->_properties['name_en'];
}
}
  • 在烘烤过程中,实体中有虚拟字段的烘烤表是否应该将displayField设置为name ?

  • 也许getter在表烘烤过程中不可用,以确定displayField和默认值为id?

  • 我是否必须修改table.twig文件以相应地输出,取决于我的结构具有name_enname_fr?

最后修改了table.twig文件:

{%- set setBilingualDisplayField = false %}
{%- for bf in bilingualFields %}
{%- if bf.name == 'name' %}
{%- set setBilingualDisplayField = true %}
{%- endif %}    
{%- endfor %}
{% if setBilingualDisplayField %}
$this->setDisplayField('name');
{% else %}
$this->setDisplayField('{{ displayField }}');
{% endif %}

相关内容

最新更新