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();
  }
}