2016-03-22 36 views
2

我有一個現有的項目在pimcore 3上開發。我正在面臨一個挑戰,同時本地化現有的類的領域,本地化的字段容器意味着使用此類的所有對象中的字段中的數據丟失。我不想丟失這些數據,而是希望將這些數據轉移到該字段容器的英語語言中。Pimcore雖然本地化的現場將現有數據移動到本地化的en(英語)語言

比方說,我有一個類 「測試」 有以下字段:

  • 名稱(文本)
  • 說明(文本域)
  • 類型(文本)
  • 類別(對象)

現在我想說我想在英語,法語和德語的3個字段以下本地化。

  • 名稱(文本)
  • 說明(文本域)
  • 類別(對象)

但我不希望我的現有數據丟失,而不是我想要的英語該地區的現場將充滿現有的數據。

在此先感謝。

回答

2

不幸的是,這並非完全簡單。在最簡單的情況下,你應該寫兩個簡單的腳本。

以下流程:

  • 複製三個字段,例如。 NameTemp,DescTemp和CategoryTemp
  • 創建一個腳本,複製從名稱到NameTemp的數據,說明 到DescTemp和類別來CategoryTemp

後複製這樣做:

  • 移動字段名稱,Desc,Category到本地化字段 - (您的數據是 仍然留在NameTemp,DescTemp和CategoryTemp中)
  • 現在創建一個新腳本,將數據從NameTemp複製到Name,DescTemp複製到Desc並將CategoryTemp複製到Catego RY

示例腳本(未測試):

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