我是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 :(得分:1)
您可以使用PHP的内省功能获取对象中的getter列表,然后依次访问每个getter以获取值并从中构建数组。记住值可能不是简单的字符串 - 它们可能是其他对象,字段集合或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
}
}
答案 1 :(得分:1)
以下应该更容易做到这一点:
$data = [];
$myObj = \Object\MagentoBaseProduct::getById(123);
foreach($myObj->getClass()->getFieldDefinitions() as $fieldDefionition) {
$data[$fieldDefinition->getName()] = $myObj->getValueForFieldName($fieldDefinition->getName());
}