01 / 07 / 2013
En el desarrollo de aplicaciones web, es muy común el uso de formularios y por extensión, la validación de sus campos para controlar qué información se almacena en la base de datos.
Si desarrollando un backend con Sonata Admin en Symfony2 tienes la necesidad de cargar un valor por defecto en uno o más campos, este minitutorial puede resultarte muy útil.
Pongamos el ejemplo de una entidad Producto con un campo activo de tipo boolean, y queremos que cuando vayamos a crear un nuevo producto, por defecto aparezca marcado el checkbox de ese campo activo. Lo que haremos será, en nuestra clase ProductoAdmin, sobreescribir el método getNewInstance() de la clase padre asignando el valor por defecto al campo o campos que corresponda:
<?php
namespace Vabadus\AdminBundle\Admin;
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;
class ProductoAdmin extends Admin
{
public function getNewInstance()
{
$producto = parent::getNewInstance();
$producto->setActivo(true);
return $producto;
}
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('activo')
// ...
;
}
// ...
}
En este caso únicamente asignamos un valor por defecto a un campo determinado, pero podríamos hacerlo con todos los campos que quisiéramos de la entidad Producto.