1

我有来自表单框架的实体。

    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) {...}

4

1 回答 1

3

您可以使用反射来检索类属性。然后,使用 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);
}

但是,如果您的表单/实体很简单,您可以在实体中创建一个专用方法来返回正确的数组。

于 2012-06-01T11:50:00.060 回答