2

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

我试过在网上浏览,官方文档并没有说太多(www.pimcore.org/wiki/display/PIMCORE/External+System+Interaction):

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

我发现了各种“松散代码”,例如:

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

我什至设法找到了上面示例中提到的“ Object_Class_Service ”,但无济于事,每当我尝试使用它时,它都会出错,据我所知,它甚至不能正常工作。

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

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

我需要创建将数据对象“用户”与数据一起导出的 PHP 脚本。你到底是如何通过脚本实现这一目标的?

4

1 回答 1

2

保存类定义的最佳方法是使用 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);
于 2015-11-09T07:27:47.083 回答