Pimcore 在字段本地化时将现有数据移动到本地化的 en(english) 语言
Pimcore While localization of a field move existing data to localized en(english) language
我有一个在 pimcore 3 上开发的现有项目。我在本地化 class 的现有字段时面临挑战,因为将字段移动到本地化字段容器意味着数据丢失使用此 class 的所有对象中的字段。我不想丢失该数据,而是希望将该数据移动到该本地化字段容器的英语语言。
假设我有一个 class "test",其中包含以下字段:
- 姓名(文字)
- 描述(文本区域)
- 类型(文本)
- 类别(对象)
假设现在我想将以下 3 个字段本地化为英语、法语和德语。
- 姓名(文字)
- 描述(文本区域)
- 类别(对象)
但我不希望我的现有数据丢失,而是希望用现有数据填充该本地化字段的英语。
提前致谢。
不幸的是,这并不完全简单。在最简单的情况下,您应该编写两个简单的脚本。
遵循此工作流程:
- 复制三个字段,例如。 NameTemp、DescTemp 和 CategoryTemp
- 创建一个脚本,将数据从 Name 复制到 NameTemp,从 Desc
到 DescTemp 和类别到 CategoryTemp
复制后执行此操作:
- 将字段 Name、Desc、Category 移动到本地化字段中 -(您的数据是
仍留在 NameTemp、DescTemp 和 CategoryTemp 中)
- 现在创建一个新脚本,将数据从 NameTemp 复制到 Name,将 DescTemp 复制到 Desc,将 CategoryTemp 复制到 Category
示例脚本(未测试):
// First run copyValueFromFieldsToTempFieldsAction(),
// then move the fields into localized field,
// afterwards run copyValueFromTempFieldsToFieldsAction()
// in the end remove temp fields
public function copyValueFromFieldsToTempFieldsAction(){
$this->disableViewAutoRender();
$objectList = new \Pimcore\Model\YourObject\Listing();
//$object_list->setObjectTypes(array(Object_Abstract::OBJECT_TYPE_VARIANT));
/* @var $object Object_PrdktResetkeNaZalogi */
foreach($objectList as $object){
$object->setNameTemp($object->getName());
$object->setDescTemp($object->getTemp());
$object->setCategoryTemp($object->getCategory());
$object->save();
}
}
public function copyValueFromTempFieldsToFieldsAction(){
$this->disableViewAutoRender();
$objectList = new \Pimcore\Model\YourObject\Listing();
//$object_list->setObjectTypes(array(Object_Abstract::OBJECT_TYPE_VARIANT));
/* @var $object Object_PrdktResetkeNaZalogi */
foreach($objectList as $object){
$object->setTemp($object->getNameTemp());
$object->setDesc($object->getTemp());
$object->setCategory($object->getCategorTemp());
$object->save();
}
}
我有一个在 pimcore 3 上开发的现有项目。我在本地化 class 的现有字段时面临挑战,因为将字段移动到本地化字段容器意味着数据丢失使用此 class 的所有对象中的字段。我不想丢失该数据,而是希望将该数据移动到该本地化字段容器的英语语言。
假设我有一个 class "test",其中包含以下字段:
- 姓名(文字)
- 描述(文本区域)
- 类型(文本)
- 类别(对象)
假设现在我想将以下 3 个字段本地化为英语、法语和德语。
- 姓名(文字)
- 描述(文本区域)
- 类别(对象)
但我不希望我的现有数据丢失,而是希望用现有数据填充该本地化字段的英语。
提前致谢。
不幸的是,这并不完全简单。在最简单的情况下,您应该编写两个简单的脚本。
遵循此工作流程:
- 复制三个字段,例如。 NameTemp、DescTemp 和 CategoryTemp
- 创建一个脚本,将数据从 Name 复制到 NameTemp,从 Desc 到 DescTemp 和类别到 CategoryTemp
复制后执行此操作:
- 将字段 Name、Desc、Category 移动到本地化字段中 -(您的数据是 仍留在 NameTemp、DescTemp 和 CategoryTemp 中)
- 现在创建一个新脚本,将数据从 NameTemp 复制到 Name,将 DescTemp 复制到 Desc,将 CategoryTemp 复制到 Category
示例脚本(未测试):
// First run copyValueFromFieldsToTempFieldsAction(),
// then move the fields into localized field,
// afterwards run copyValueFromTempFieldsToFieldsAction()
// in the end remove temp fields
public function copyValueFromFieldsToTempFieldsAction(){
$this->disableViewAutoRender();
$objectList = new \Pimcore\Model\YourObject\Listing();
//$object_list->setObjectTypes(array(Object_Abstract::OBJECT_TYPE_VARIANT));
/* @var $object Object_PrdktResetkeNaZalogi */
foreach($objectList as $object){
$object->setNameTemp($object->getName());
$object->setDescTemp($object->getTemp());
$object->setCategoryTemp($object->getCategory());
$object->save();
}
}
public function copyValueFromTempFieldsToFieldsAction(){
$this->disableViewAutoRender();
$objectList = new \Pimcore\Model\YourObject\Listing();
//$object_list->setObjectTypes(array(Object_Abstract::OBJECT_TYPE_VARIANT));
/* @var $object Object_PrdktResetkeNaZalogi */
foreach($objectList as $object){
$object->setTemp($object->getNameTemp());
$object->setDesc($object->getTemp());
$object->setCategory($object->getCategorTemp());
$object->save();
}
}