使用 php 脚本将 pimcore 中的现有数据对象导出到 XML 文件
Exporting existing data objects in pimcore to an XML file using php scripting
我正在尝试使用 php 脚本从 CVS 文件导入数据对象并从 Pimcore 将数据导出到 XML 文件。我已经设法从 CVS 文件导入数据,但是我不知道如何导出到 XML 文件。
网上查了下,官方文档也没说多少(www.pimcore.org/wiki/display/PIMCORE/External+System+Interaction):
Export of data objects can be achieved programmatically or through
pimcore CSV export. The UI export can be found when clicking on an
object folder and selecting the Search, Edit & Export Tab.
我发现了“loose code”的各种片段,例如:
include("pimcore/cli/startup.php"); $class = Object_Class::getById(1);
echo Object_Class_Service::generateClassDefinitionXml($class);
我什至设法找到了上面示例中提到的“Object_Class_Service”,但无济于事,每当我尝试使用它时,它都会出错,据我所知它没有'甚至无法正常工作。
我寻找了各种帮助程序和其他方法来找到将 pimcore 数据对象导出到 XML 的正确方法,但似乎什么都没有。
导出非常简单,一个数据对象,我们将其命名为用户,输入字段带有 getter/setter "Name".
我需要创建 PHP 脚本来导出数据对象 'User' 和数据。你究竟是如何通过脚本实现这一点的?
保存 class 定义的最佳方法是使用 JSON,因为 Pimcore 将其用于 Class 定义导出和导入。
/*
* 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);
请注意,对象 Class ID 和对象名称 class 未保存在对象定义文件中。这就是为什么需要这样做:
$nameOfTheClass = "someClass";
$class = Pimcore\Model\Object\ClassDefinition::getByName($name);
我正在尝试使用 php 脚本从 CVS 文件导入数据对象并从 Pimcore 将数据导出到 XML 文件。我已经设法从 CVS 文件导入数据,但是我不知道如何导出到 XML 文件。
网上查了下,官方文档也没说多少(www.pimcore.org/wiki/display/PIMCORE/External+System+Interaction):
Export of data objects can be achieved programmatically or through pimcore CSV export. The UI export can be found when clicking on an object folder and selecting the Search, Edit & Export Tab.
我发现了“loose code”的各种片段,例如:
include("pimcore/cli/startup.php"); $class = Object_Class::getById(1); echo Object_Class_Service::generateClassDefinitionXml($class);
我什至设法找到了上面示例中提到的“Object_Class_Service”,但无济于事,每当我尝试使用它时,它都会出错,据我所知它没有'甚至无法正常工作。
我寻找了各种帮助程序和其他方法来找到将 pimcore 数据对象导出到 XML 的正确方法,但似乎什么都没有。
导出非常简单,一个数据对象,我们将其命名为用户,输入字段带有 getter/setter "Name".
我需要创建 PHP 脚本来导出数据对象 'User' 和数据。你究竟是如何通过脚本实现这一点的?
保存 class 定义的最佳方法是使用 JSON,因为 Pimcore 将其用于 Class 定义导出和导入。
/*
* 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);
请注意,对象 Class ID 和对象名称 class 未保存在对象定义文件中。这就是为什么需要这样做:
$nameOfTheClass = "someClass";
$class = Pimcore\Model\Object\ClassDefinition::getByName($name);