[Form] added support for stdClass objects
ReflectionClass doesn't list properties on stdClass objects (or objects cast from arrays). This allows these annoymous objects to be used as field data.
This commit is contained in:
parent
c3b89eeedd
commit
b2e4b452a4
@ -572,6 +572,9 @@ abstract class Field extends Configurable implements FieldInterface
|
|||||||
throw new PropertyAccessDeniedException(sprintf('Property "%s" is not public in class "%s". Maybe you should create the method "get%s()" or "is%s()"?', $property, $reflClass->getName(), ucfirst($property), ucfirst($property)));
|
throw new PropertyAccessDeniedException(sprintf('Property "%s" is not public in class "%s". Maybe you should create the method "get%s()" or "is%s()"?', $property, $reflClass->getName(), ucfirst($property), ucfirst($property)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return $object->$property;
|
||||||
|
} else if (property_exists($object, $property)) {
|
||||||
|
// needed to support \stdClass instances
|
||||||
return $object->$property;
|
return $object->$property;
|
||||||
} else {
|
} else {
|
||||||
throw new InvalidPropertyException(sprintf('Neither property "%s" nor method "%s()" nor method "%s()" exists in class "%s"', $property, $getter, $isser, $reflClass->getName()));
|
throw new InvalidPropertyException(sprintf('Neither property "%s" nor method "%s()" nor method "%s()" exists in class "%s"', $property, $getter, $isser, $reflClass->getName()));
|
||||||
@ -603,6 +606,9 @@ abstract class Field extends Configurable implements FieldInterface
|
|||||||
throw new PropertyAccessDeniedException(sprintf('Property "%s" is not public in class "%s". Maybe you should create the method "set%s()"?', $property, $reflClass->getName(), ucfirst($property)));
|
throw new PropertyAccessDeniedException(sprintf('Property "%s" is not public in class "%s". Maybe you should create the method "set%s()"?', $property, $reflClass->getName(), ucfirst($property)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$objectOrArray->$property = $this->getData();
|
||||||
|
} else if (property_exists($objectOrArray, $property)) {
|
||||||
|
// needed to support \stdClass instances
|
||||||
$objectOrArray->$property = $this->getData();
|
$objectOrArray->$property = $this->getData();
|
||||||
} else {
|
} else {
|
||||||
throw new InvalidPropertyException(sprintf('Neither element "%s" nor method "%s()" exists in class "%s"', $property, $setter, $reflClass->getName()));
|
throw new InvalidPropertyException(sprintf('Neither element "%s" nor method "%s()" exists in class "%s"', $property, $setter, $reflClass->getName()));
|
||||||
|
Reference in New Issue
Block a user