来自我的schema.yml的示例:
Service:
actAs:
I18n:
fields: [title]
tableName: services
columns:
id: { type: integer(3), primary: true, autoincrement: true }
title: { type: string(255) }
DailyHoroscope:
actAs:
Timestampable: ~
I18n:
fields: [ description ]
tableName: daily_horoscopes
inheritance:
type: concrete
extends: Service
columns:
description: { type: text }
date: { type: date }
starsign_id: { type: integer(1), notnull: true }
relations:
Starsign:
type: one
class: Starsign
local: starsign_id
foreign: id
在结果中,只有标题是国际化的。同样在数据库中,只有标题是国际化的。
我试图谷歌这个问题,但没有任何结果。
在数据库中,在表daily_horoscopes_translations中我只有翻译标题。 在表单中,只有标题字段是国际化的,但描述只有一个。
在BaseDailyHoroscopeTranslationFormFilter.class.php中:
public function getFields()
{
return array(
'id' => 'Number',
'title' => 'Text',
'lang' => 'Text',
);
}
但如果你添加'description' - 它将无效,因为数据库是以错误的方式生成的。
答案 0 :(得分:2)
描述子表中的i18n字段,而不是父表:
Service:
# actAs:
# I18n:
# fields: [title]
tableName: services
columns:
id: { type: integer(3), primary: true, autoincrement: true }
title: { type: string(255) }
DailyHoroscope:
actAs:
Timestampable: ~
I18n:
fields: [ description, title ]
tableName: daily_horoscopes
inheritance:
type: concrete
extends: Service
columns:
description: { type: text }
date: { type: date }
starsign_id: { type: integer(1), notnull: true }
relations:
Starsign:
type: one
class: Starsign
local: starsign_id
foreign: id
然后在表单中取消设置继承的字段(在我们的例子中是'title')字段,最后嵌入i18n表单对象:
unset($this['title']);
$this->embedI18n(array('en','fr','ru'));