PHP和Symfony对象到数组的类型强制转换



我使用symfony2和createForm来获取http post数据。After witch I do:

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

得到:

array (size=1)
  '�FarMTAccountBundleEntityMovement�toAccount' => int 3

我认为这不是这些情况下的正常行为,有什么建议吗?

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;

之后我会清理的

你可以使用Symfony normalizer类,因为当你的表单名称中有下划线字段时,你的建议将失败,如'facility_id',但你的setter被称为facilityId

<?php
$data = $form->getData();       
$normalizers = new SymfonyComponentSerializerNormalizerGetSetMethodNormalizer();
$norm = $normalizers->normalize($data);
print_r($norm);

你会得到像

这样的输出
Array ( [fullname] => fullnameVal [email] => emaile@lkjl.com [phoneNumber] => 5554444 [facilityId] => 123132 )

最新更新