我在使用后来添加的语言商店时遇到了一个问题,该商店不是EN或DE。我有一个函数,它只是更新我的邮件模板类型的模板数据。
$this->mailTemplateTypeRepository->update([[
'id' => $mailTemplateType->getId(),
'templateData' => $data
]], $context->getContext());
但无论出于何种原因,它都试图创建一个新的mail_template_type_translation,这导致了一个异常:
An exception occurred while executing 'INSERT INTO `mail_template_type_translation` (`mail_template_type_id`, `language_id`, `name`, `created_at`) VALUES ('�>yd�Kͤh�Qu��H','�xr^z�C��p�p;U',NULL,'2022-10-06 11:36:48.844');'
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name' cannot be null
对于邮件模板类型,语言商店的翻译不存在,我不想添加它们,它应该只使用这种翻译的后备语言。简单地添加一个未翻译的字段似乎会导致其在特定语言中的翻译。
您可以更改Context
的languageIdChain
属性,使其仅包含翻译的默认语言。
$clonedContext = clone $context->getContext();
$clonedContext->assign(['languageIdChain' => [Defaults::LANGUAGE_SYSTEM]]);
$this->mailTemplateTypeRepository->update([[
'id' => $mailTemplateType->getId(),
'templateData' => $data
]], $clonedContext);