класс объектов pimcore: получение всех данных

я новичок в pimcore и создал класс объекта — вот фрагмент кода, который получит поле «title» при сохранении записи:

class MagentoBaseProduct extends Concrete {

public function getTitle () {
$preValue = $this->preGetValue("title");
if($preValue !== null && !\Pimcore::inAdmin()) {
return $preValue;
}
$data = $this->title;
return $data;
}
}

Мне было интересно, если есть получить весь объект так, чтобы я получил все поля в одном массиве (вместо того, чтобы получить каждое поле отдельно)?

Спасибо

0

Решение

Вы можете использовать возможности самоанализа PHP, чтобы получить список получателей в объекте, а затем обращаться к каждому получателю по очереди, чтобы получить значения и построить массив из этого. Помните, что значения могут не быть простыми строками — это могут быть другие объекты, коллекции полей или все, что позволяет Pimcore.

$myObj = \Object\MagentoBaseProduct::getById(123);
$reflection = new \ReflectionClass($myObj);
$methods = $reflection->getMethods(ReflectionMethod::IS_PUBLIC);

foreach ($methods as $method) {
$methodName = $method->getName();
if (substr($methodName, 0, 3) == 'get') {
// do stuff to add to array here
}
}

http://php.net/manual/en/book.reflection.php

1

Другие решения

Следующее должно сделать трюк намного проще:

$data = [];
$myObj = \Object\MagentoBaseProduct::getById(123);
foreach($myObj->getClass()->getFieldDefinitions() as $fieldDefionition) {
$data[$fieldDefinition->getName()] = $myObj->getValueForFieldName($fieldDefinition->getName());
}
1

По вопросам рекламы [email protected]