【发布时间】:2019-10-24 02:42:39
【问题描述】:
我们正在开发一个 Silverstripe 项目,使用 Fluent 来显示多个翻译/语言环境。
我们想要设置一些数据对象,以便可以将记录切换为仅在某些 Fluent 语言环境中显示。想法是在数据对象上有一个复选框字段,用户可以在其中选择他们希望记录显示的区域设置。
这是一个示例数据对象:
namespace Yard;
use SilverStripe\ORM\DataObject;
use TractorCow\Fluent\Model\Locale;
class Milkshake extends DataObject {
private static $table_name = 'Milkshake';
private static $db = [
'Title' => 'Varchar(255)'
]
private static $belongs_many_many = [
'ShowInLocale' => 'Locale'
];
}
那么我们需要扩展 Locale 类:
namespace AppExtensions;
use SilverStripe\ORM\DataExtension;
class LocaleExtension extends DataExtension
{
private static $many_many = [
'Milkshakes' => 'Yard\Milkshake'
];
}
并通过 YML 应用该扩展:
TractorCow\Fluent\Model\Locale:
extensions:
- 'AppExtensions\LocaleExtension'
到目前为止一切顺利 - 但是当我尝试在管理员中查看“奶昔”时,我收到以下错误消息:
[紧急] 未捕获的 LogicException:belongs_many_many 关系 Yard\Milkshake.ShowInLocale 指向没有匹配的 Locale 很多人
据我所知,我添加了一个匹配的many_many 关系:数据库记录已创建。
感谢任何关于我应该如何解决此问题的想法。
【问题讨论】:
标签: php silverstripe silverstripe-4