2013-04-09 2 views
0

http post 데이터를 얻기 위해 symfony2와 createForm을 사용하고 있습니다. 마녀 후에 나는 수행PHP와 Symfony 객체가 타입 변환에 의한 배열 변환

$Data = (array) $form->getData(); 

내가 얻을 :

array (size=1) 
    '�Far\MT\AccountBundle\Entity\Movement�toAccount' => int 3 

나는이 이러한 경우에 대한 정상적인 동작입니다 생각하지 않는다, 어떤 sugestions를?

toAccount는 전체 색인 이름이어야합니다.

은 CLI에 대한 테스트 케이스에 조건을 재현 할 수 없습니다 :

<?php 

namespace A; 

class MyClass 
{ 
    public $id; 
    public $name; 
    public $age; 
} 

$object = new MyClass(); 
$object->name = "Andre"; 
$object->id = 1; 
$object->age = 30; 

var_dump($object); 

$Ar = (array) $object; 
var_dump($Ar) 

이 위에서 확인했다.

//comment 
$Data = $form->getData(); 
$obj = new \ReflectionObject($Data); 
$props = $obj->getProperties(); 

$propname = array(); 
foreach ($props as $prop) { 

    $tmp = "get".ucfirst($prop->name); 

    if (($res = $Data->$tmp())!== null) { 
     $propname[$prop->name] = $res; 
    } 
} 
$tmpSearch = $propname; 

난 후 그것을 청소 수 있습니다 :

나는이 솔루션을 사용했다.

답변

1

당신은 심포니 정규화 클래스를 사용할 수 있습니다와 같은 당신이 'facility_id'와 같은 밑줄 양식 이름 필드가 있지만 세터가 원하는 출력을 얻을 수 있습니다 facilityId

<?php 
$data = $form->getData();  
$normalizers = new \Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer(); 
$norm = $normalizers->normalize($data); 
print_r($norm); 

를 호출 할 때 실패합니다 제안

Array ([fullname] => fullnameVal [email] => [email protected] [phoneNumber] => 5554444 [facilityId] => 123132)