En el archivo twig tienes que poner:
{% for flashMessage in app.session.flashbag.get('errordelete') %}
<div class="alert-error">
{{ flashMessage }}
</div>
{% endfor %}
Si lo que quieres es mostrarlo dentro del formulario:
catch (\Doctrine\DBAL\DBALException $e){
//$this->get('session')->getFlashBag()->add('errordelete', "No se puede ingresar, clave compuesta Duplicada.");
$form->addError(new FormError("No se puede ingresar, clave compuesta Duplicada."));
return $this->redirect($this->getRequest()->getRequestUri());
}
En versiones inferiores a la 2.3 se usaba una línea diferente a '\Doctrine\DBAL\DBALException', no me acuerdo cual. Si no pasa por el catch en tu caso puede ser que tengas que buscar cual es la correcta.
El catch de esta forma está incompleto, considera todos los errores como si fuera la llave duplicada, debes encontrar el error que te hace falta y relanzar los demás. Algo así como:
const ER_DUP_ENTRY = 1062; //Busca cual es tu error
$errorCode = 23000; //database_driver = pdo_mysql, busca cual es para la base de datos que estas usando
if ($e->getCode() == 0)
{
if ($e->getPrevious()->getCode() == $errorCode)
{
$x = $e->getPrevious()->errorInfo;
if ($x[1] == ER_DUP_ENTRY)
{
$form->addError(new FormError("No se puede ingresar, clave compuesta Duplicada."));
return $this->redirect($this->getRequest()->getRequestUri());
}
else
{
throw $e;
}
}
else
{
throw $e;
}
}
else
{
throw $e;
}
Esto es solo una guía, no es para seguir al pie de la letra.