isvalid form createform php doctrine

php - createform - symfony using form



¿forma fácil de completar un modelo de doctrine 2 con datos de formulario? (3)

Imagine un modelo de User como este:

class User { /** * ...some mapping info... */ private $username; /** * ...some mapping info... */ private $password; public function setUsername($username) { $this->username = $username; } public function setPassword($password) { $this->password = $password; } }

Un formulario de muestra para enviar un nuevo User :

<form action="/controller/saveUser" method="post"> <p>Username: <input type="text" name="username" /></p> <p>Password: <input type="text" name="password" /></p> </form>

Actualmente en mi controlador guardo un nuevo User como este:

public function saveUser() { $user = new User(); $user->setUsername($_POST[''username'']); $user->setPassword($_POST[''password'']); $entityManager->persist($user); }

Eso significa que se llama al método setter para cada una de las propiedades que recibo a través del formulario.

Mi pregunta: ¿hay algún método en Doctrine que te permita mapear automáticamente datos de formulario / una estructura de matriz a un modelo de Doctrine? Idealmente, es posible rellenar gráficos de objetos anidados a partir de una matriz con una estructura similar.

Idealmente, podría cambiar mi código de controlador a algo similar (pseudo código / ejemplo):

public function saveUser() { $user = Doctrine::populateModelFromArray(''User'', $_POST); // does this method exist? $entityManager->persist($user); }

¡Gracias de antemano por cualquier pista!

EDITAR: Parece algo como esto existe en Doctrine 1 ( http://www.doctrine-project.org/projects/orm/1.2/docs/manual/working-with-models%3Aarrays-and-objects%3Afrom-array/ en ) - entonces, ¿hay un equivalente en Doctrine 2?


Si nombra sus campos igual que las propiedades de la entidad:

<?php foreach($_POST as $field => $val){ $object->$field = $val; } ?>

Pero eso solo funciona para propiedades públicas. Sin embargo, puede calcular el nombre del método en función de esto y usar call_user_func () para llamarlo.


Esto funciona para mí en Doctrine 2.0

$user = new User(); $user->fromArray($_POST);

Siempre que las claves de su matriz POST coincidan con los nombres de las columnas, esto debería rellenar el modelo por usted.


$ user = new User (); $ user-> fromArray ($ _ POST);

Lo probé en Doctrine 1.2.4, funciona muy bien.