Я пытаюсь импортировать объекты данных из файлов CVS и экспортировать данные в файлы XML из Pimcore с помощью сценариев php. Мне удалось импортировать данные из файлов CVS, однако я не могу понять, как экспортировать в файл XML.
Я пробовал просматривать веб-страницы, и официальная документация мало что говорит (www.pimcore.org/wiki/display/PIMCORE/External+System+Interaction):
Экспорт объектов данных может быть достигнут программно или через
pimcore CSV экспорт. Экспорт пользовательского интерфейса можно найти, нажав на
папку объекта и выбрав Поиск, Изменить & Экспорт Таб.
Я нашел различные кусочкисвободный код«, лайк:
включают в себя ( «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, который экспортирует объект данных «Пользователь» вместе с данными. Как, черт возьми, вы достигаете этого с помощью сценариев?
Лучший способ сохранить определения классов — это использовать 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);
Обратите внимание, что идентификатор класса объекта и имя класса объекта не сохраняются в файле определения объекта. Вот почему это необходимо:
$nameOfTheClass = "someClass";
$class = Pimcore\Model\Object\ClassDefinition::getByName($name);
Других решений пока нет …