symfony - dispositivo - ir a configuración
configurando el valor por defecto en el paquete de administrador de sonata symfony2 (4)
¿Cómo puedo establecer el valor predeterminado en el paquete de administración de sonata? Falta la opción de datos en el método configureFormFields
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add(''name'', null, array(''required'' => true, ''data'' => "my default value"))
;
}
¿Cómo se puede usar el atributo de datos para establecer el valor predeterminado dentro del campo?
Además de la solución @RobMasters:
Si desea establecer una relación, puede obtener una referencia del gestor de entidades (en lugar del objeto completo):
public function getNewInstance()
{
$instance = parent::getNewInstance();
if ($this->hasRequest()) {
$branch = $this->getRequest()->get(''branch'', null);
if ($branch !== null) {
$entityManager = $this->getModelManager()->getEntityManager(''MyBundle/Entity/Branch'');
$branchReference = $entityManager->getReference(''MyBundle/Entity/Branch'', $branch);
$instance->setBranch($branchReference);
}
}
return $instance;
}
Agregué el ejemplo a mi blog: http://blog.webdevilopers.net/populate-resp-set-default-values-on-form-resp-object-or-instance-in-sonataadminbundle/
Para los booleanos, otra opción es establecer un valor de data
dentro de la primera matriz pasada a su método de add
, dentro de configureFormFields
Entonces, después de algunas memorias, mi código (para una casilla de verificación que quería haber marcado de forma predeterminada) terminó pareciéndose a esto:
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add(''name'')
->add(''visible'', null, [''label''=>''Visibility'', ''data'' => true ])
;
}
... que guardó algunas líneas en la parte superior de mi archivo, ya que luego podría deshacerme de la definición de getNewInstance ().
Supongo que probablemente ya hayas resuelto esto, pero como referencia a cualquier otra persona, puedes anular el método getNewInstance () y establecer el valor predeterminado en el objeto:
public function getNewInstance()
{
$instance = parent::getNewInstance();
$instance->setName(''my default value'');
return $instance;
}
También puede asignar el valor predeterminado a la propiedad de la entidad directamente:
class TheEntity
{
private $name = ''default name'';
}