我有来自表单框架的实体。
public function editAction($id)
{
$request = $this->getRequest();
$r = $this->getProfileRepository();
$profile = $id ? $r->find($id) :
new \Alden\BonBundle\Entity\Profile();
/* @var $profile \Alden\BonBundle\Entity\Profile */
$form = $this->createForm(
new \Alden\BonBundle\Form\Type\ProfileType(),
$profile);
if ($request->getMethod() == 'POST')
{
$form->bindRequest($request);
if ($form->isValid())
{
...
我需要将$profile
转换为数组。在课程Profile
中,所有属性都被定义为私有,因此我无法像foreach($profile as $key => $value) {...}
答案 0 :(得分:3)
您可以使用Reflection来检索类属性。然后,使用PropertyPath检索属性值。
这是一个例子:
$reflectedClass = new \ReflectionClass($yourClass);
$objectProperties = $reflectedClass->getProperties();
$datas = array();
foreach ($objectProperties as $objectProperty) {
$property = $objectProperty->getName();
$path = new PropertyPath($property);
$datas[] = $path->getValue($object);
}
但是,如果你的表单/实体很简单,你可以在实体中创建一个专用方法来返回正确的数组。