0

我正在使用 symfony2 和 createForm 来获取 http post 数据。在女巫之后我这样做:

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

我得到:

array (size=1)
  '�Far\MT\AccountBundle\Entity\Movement�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;

之后我会清理它。

4

1 回答 1

2

您可以使用 Symfony 规范器类,因为当您的表单名称中的字段带有下划线(如“facility_id”)但您的设置器称为设施ID 时,您的提议将失败

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

你会得到像

Array ( [fullname] => fullnameVal [email] => emaile@lkjl.com [phoneNumber] => 5554444 [facilityId] => 123132 )
于 2014-02-18T17:45:10.767 回答