cakephp 正在烘焙错误的表displayField,即使实体中包含名称getter

g9icjywg  于 2022-11-11  发布在  PHP
关注(0)|答案(1)|浏览(137)

这是在我的表中设置的当前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在表bake过程中不可用,无法确定displayField并将其默认为id
  • 我是否必须根据具有name_enname_fr的结构相应地修改table.twig文件以进行输出?
zengzsys

zengzsys1#

最后修改了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 %}

相关问题