Pimcore虽然字段的本地化将现有数据移动到本地化的en(英语)语言

时间:2016-03-22 14:09:29

标签: localization pimcore

我有一个在pimcore 3上开发的现有项目。我正在面对一个挑战,同时本地化一个类的现有字段,就像将一个字段移动到本地化字段容器意味着使用这个字段丢失所有对象中的字段类。我不想丢失这些数据,而是希望将数据移动到该本地化容器的英语语言。

让我们说我有一个班级"考试"以下字段:

  • 姓名(文字)
  • Desc(textarea)
  • 类型(文字)
  • 类别(对象)

现在让我们说想要将3个字段本地化为英语,法语和德语。

  • 姓名(文字)
  • Desc(textarea)
  • 类别(对象)

但我不希望丢失现有数据,而是希望用本地化的字段填写现有数据。

提前致谢。

1 个答案:

答案 0 :(得分:2)

不幸的是,这并非完全直截了当。在最简单的情况下,您应该编写两个简单的脚本。

请遵循以下工作流程:

  • 复制三个字段,例如NameTemp,DescTemp和CategoryTemp
  • 创建一个脚本,将Desc中的数据从Name复制到NameTemp 到DescTemp和Category到CategoryTemp

复制后执行此操作:

  • 将字段名称,描述,类别移动到本地化字段中 - (您的数据是 仍留在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();
  }
}