使用php脚本将pimcore中的现有数据对象导出到XML文件

时间:2015-11-08 22:47:22

标签: php xml object scripting pimcore

我正在尝试从CVS文件导入数据对象,并使用php脚本将数据从Pimcore导出到XML文件。我已经设法从CVS文件导入数据,但是我无法弄清楚如何导出到XML文件。

我试过环顾网络,官方文档并没有多说(www.pimcore.org/wiki/display/PIMCORE/External+System+Interaction):

  

可以通过编程方式或通过以下方式实现数据对象的导出   pimcore CSV导出。单击时可以找到UI导出   对象文件夹并选择“搜索”,“编辑”和“导出标签。

我找到了各种各样的“loose code”,如:

  

包括( “pimcore / CLI / startup.php”); $ class = Object_Class :: getById(1);   echo Object_Class_Service :: generateClassDefinitionXml($ class);

我甚至设法找到上面例子中提到的“Object_Class_Service”,但无济于事,只要我尝试使用它就会出错,从我能说的它甚至都没有尽职尽责。

我已经找到了各种帮助程序和其他方法来找到将pimcore数据对象导出到XML的正确方法,但似乎没有任何内容。

导出非常简单,一个数据对象,我们将其命名为User,输入字段带有getter / setter“Name”。

我需要创建PHP脚本,该脚本将数据对象'User'与数据一起导出。你是如何通过脚本实现这一目标的呢?

1 个答案:

答案 0 :(得分:1)

保存类定义的最佳方法是使用JSON,因为Pimcore用于类定义导出和导入。


val list = List(1, 4, 5, 2, 3, 5, 5, 7, 8, 9, 2, 7, 4)
//> list  : List[Int] = List(1, 4, 5, 2, 3, 5, 5, 7, 8, 9, 2, 7, 4)
//Using takeWhile with dropWhile
list.takeWhile(_ != 7) ++ list.dropWhile(_ != 7).take(1)
//> res0: List[Int] = List(1, 4, 5, 2, 3, 5, 5, 7)
//Using take with segmentLength
list.take(list.segmentLength(_ != 7, 0) + 1)
//> res1: List[Int] = List(1, 4, 5, 2, 3, 5, 5, 7) //Using take with indexOf list.take(list.indexOf(7) + 1) //> res2: List[Int] = List(1, 4, 5, 2, 3, 5, 5, 7)

请注意,Object Class Id和对象类的名称不会保存在对象定义文件中。这就是为什么需要这样做的原因:

/*
 * Export class definition
 */

// !!! This is the id of the object class, not the id of object instance.
// Go to Settings > Object > Classes and find the object class ID there
$classId = 5;

$class = Pimcore\Model\Object\ClassDefinition::getById($classId);
$classDefinitionJson = Pimcore\Model\Object\ClassDefinition\Service::generateClassDefinitionJson($class);
header("Content-type: application/json");
header("Content-Disposition: attachment; filename=\"class_" . $class->getName() . "_export.json\"");
echo $classDefinitionJson;


/*
 * Import class definition
 */
$nameOfTheClass = "someClass";

$class = Pimcore\Model\Object\ClassDefinition::getByName($name);
if (!$class) {
    $class = new Pimcore\Model\Object\ClassDefinition();
    $class->setName($name);
}

$classDefinitionJson = @file_get_contents($classDefinitionJson);
$classDefinitionJson = json_decode($classDefinitionJson, true);
Pimcore\Model\Object\ClassDefinition\Service::importClassDefinitionFromJson($class, $classDefinitionJson);
相关问题