2016-03-22 19 views
2

私は既存のプロジェクトをpimcore 3で開発しました。クラスの既存のフィールドをローカライズする際に課題があります。ローカライズされたフィールドコンテナは、このクラスを使用するすべてのオブジェクトのフィールドからのデータの損失を意味します。私はそのデータを失いたくない代わりに、そのデータをそのlocalizedfieldコンテナの英語に移すことを望んでいました。ピムコアフィールドのローカライズで既存のデータをローカライズされたen(英語)言語に移動します。

のは、私は以下のフィールドを持つクラス "テスト" を持っているとしましょう:

  • 名(テキスト)
  • DESC(テキストエリア)
  • タイプ(テキスト)
  • カテゴリー(オブジェクト)

ここで、英語、フランス語、ドイツ語の3つのフィールドの下にローカライズしたいとしましょう。

  • 名(テキスト)
  • DESC(テキストエリア)
  • カテゴリー(オブジェクト)

しかし、私は私が英語をしたいの代わりに、私の既存のデータが失われることしたくありませんそのローカリゼーションのフィールドは既存のデータでいっぱいになります。

ありがとうございます。

答えて

2

残念ながら、これは完全に単純ではありません。最も単純なケースでは、2つの簡単なスクリプトを書く必要があります。

  • は、例えば、三つのフィールドを複製:

    は、このワークフローに従ってください。 NameTemp、DescTempとCategoryTemp

  • コピーNameTempの名前からのデータ、DESC からDescTempとカテゴリへCategoryTemp

にあなたがこれを行うにコピーした後、スクリプト作成:

  • 動きが名をフィールドに(あなたのデータはまだNameTemp、DescTemp、およびCategoryTempに残っている です)
  • NameTempからNameにDescTemp、DescにDescTemp、CategoにCategoryTempのデータをコピーする新しいスクリプトを作成するようになりました。 RY

サンプルスクリプト(TESTED NOT):

// 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(); 
    } 
} 
関連する問題