Hola.
Tengo un formulario con un campo collection de tipo *ListadoDetallesType()* este form type tiene 22 campos, hasta aquí todo bien.
El problema viene cuando quiero editar mas de un registro al mismo tiempo, pasando a:
Código PHP:
Ver original$form = $this->createForm(new DetallesType(), $detalles);
Al hacer esto, cuando los detalles son mas de 30, obtengo el siguiente error:
Código PHP:
Ver originalOutOfMemoryException in Profile.php line 143:
Error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2779493 bytes)
He notado que el problema se de debe al numero de campos del form type ListadoDetallesType(), porque si le dejo por ejemplo 5 campos no hay problema.
Para pasarle el arreglo de objectos $detalles a createForm me he guiado con un ejemplo que hay aca:
http://sf2.showmethecode.es/app.php/...orms/user/edit
El codigo resumido es:
Código PHP:
Ver original$detalles = $this->get('detalles_repository')->findUltimosDetalles(15);
$detallesContainer = new \AppBundle\Form\Model\Detalles($detalles);
$form = $this->createForm(new DetallesType(), $detalles);
Y la clase Detalles es:
Código PHP:
Ver originalnamespace AppBundle\Form\Model;
use Symfony\Component\Validator\Constraints
as Assert;
class Nota
{
/**
* @Assert\Valid()
*/
public $notas;
public function __construct($notas)
{
$this->notas = $notas;
}
}
DetallesType.php:
Código PHP:
Ver original...
public function buildForm
(FormBuilderInterface
$builder, array $options) {
$builder
->add('detalles', 'collection', [
'type' => new ListadoDetallesType(),
])
;
}
...
ListadoDetallesType.php:
Código PHP:
Ver originalpublic function buildForm
(FormBuilderInterface
$builder, array $options) {
$builder
->add('detalle1', null, [])
.... // 22 campos mas
;
}
En la plantilla twig:
Código HTML:
Ver original<form method="POST" role="form" {{ form_enctype(form) }}> {{ form_widget(form) }}
<button type="submit" class="btn btn-success">Guardar
</button>
Al final esto se renderiza asi:
http://postimg.org/image/vnuwn1ubf/
Que debo hacer para evitar ese error? ¿O debo hacer este tipo de formulario de otra manera?
Espero que me puedan ayudar.
Gracias.