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


Exporting existing data objects in pimcore to an XML file using php scripting

我正在尝试从CVS的文件中导入数据对象,并使用php脚本将数据从Pimcore导出到XML文件。我已经设法从CVS文件中导入了数据,但我不知道如何导出到XML文件。

我试着浏览了一下网页,但官方文档并没有说太多(www.pimcore.org/wiki/deisplay/pimcore/External+System+Interaction):

数据对象的导出可以通过编程或通过pimcore CSV导出。单击对象文件夹,然后选择搜索、编辑&导出选项卡

我发现了各种各样的"松散代码",比如:

include("pimcore/cli/startment.php")$class=Object_class::getById(1);echo Object_Class_Service::generateClassDefinitionXml($Class);

我甚至找到了上面例子中提到的"Object_Class_Service",但没有用,每当我尝试使用它时,它都会出错,据我所知,它甚至不能正常工作。

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

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

我需要创建PHP脚本,将数据对象"User"与数据一起导出。你究竟是如何通过脚本来实现这一点的?

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

/*
 * 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);

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

$nameOfTheClass = "someClass";
$class = Pimcore'Model'Object'ClassDefinition::getByName($name);