Pimcore При локализации поля перенесите существующие данные на локализованный английский язык

У меня есть существующий проект, разработанный на pimcore 3. Я столкнулся с проблемой при локализации существующих полей класса, так как перемещение поля в контейнер локализованных полей означает потерю данных из поля во всех объектах, использующих этот класс. Я не хочу терять эти данные и вместо этого хочу, чтобы эти данные были перемещены на английский язык этого контейнера локализованного поля.

Допустим, у меня есть класс «тест» с полями ниже:

  • Имя (текст)
  • Описание (текстовое поле)
  • Тип (текст)
  • Категория (объект)

Допустим, теперь я хочу локализовать ниже 3 полей для английского, французского и немецкого языков.

  • Имя (текст)
  • Описание (текстовое поле)
  • Категория (объект)

Но я не хочу, чтобы мои существующие данные были потеряны, вместо этого я хочу, чтобы английский язык поля этой локализации был заполнен существующими данными.

Заранее спасибо.


person Bhupinder Bisht    schedule 22.03.2016    source источник


Ответы (1)


К сожалению, это не совсем просто. В самом простом случае вы должны написать два простых скрипта.

Следуйте этому рабочему процессу:

  • продублируйте три поля, например. NameTemp, DescTemp и CategoryTemp
  • создайте скрипт, который копирует данные из Name в NameTemp, из Desc в DescTemp и из Category в CategoryTemp

После того, как вы скопировали, сделайте следующее:

  • переместите поля Name, Desc, Category в локализованное поле (ваши данные все еще остаются в NameTemp, DescTemp и CategoryTemp)
  • теперь создайте новый скрипт, который копирует данные из NameTemp в Name, DescTemp в Desc и CategoryTemp в категорию

Пример скрипта (НЕ ПРОВЕРЕН):

// 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();
  }
}
person Igor Benko    schedule 22.03.2016