PHP y Symfony objeto de la matriz de conversión por tipo de fundición

Estoy usando symfony2 y createForm para obtener los datos http post. Después de bruja que hacer:

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

Y me sale:

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

No creo que este es el comportamiento normal para estos casos, cualquier sugerencias?

la toAccount debe ser el índice completo de nombres.

No era capaz de reproducir las condiciones en un caso de prueba para la 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)

Esto anteriormente trabajó en aceptar.

He utilizado esta solución:

//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;

Voy a limpiar después.

1 Kommentar

  1. 2

    Puede utilizar Symfony normalizador de la clase, como tu proponer fallará cuando usted tiene campos en el formulario el nombre con el carácter de subrayado como «facility_id’, pero su setter se llama facilityId

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

    usted obtendrá una salida como

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

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea