Daniel gracias por responderme, verás al final lo resolví de la manera que no quería:
PaisRepository:
public function countDepartamentos($pais){
$em = $this->getEntityManager();
$query = $em->createQuery("select d from App\Entity\Departamento d where d.pais = :pais")
->setParameter('pais', $pais);
return count($query->getResult()) > 0 ? true : false;
}
PaisController:
/**
* @Route("/delete/{id}/", name="pais_delete", methods={"GET","POST"})
*/
public function delete(Request $request, ValidatorInterface $validator, $id) {
$em = $this->getDoctrine()->getManager();
$pais = $em->getRepository(Pais::class)->find($id);
$form = $this->createForm(BorrarType::class, null);
$form->handleRequest($request);
if($this->isDeleted($em, $form, $request, $validator, $pais)){
if(!$request->request->get("sip")) {
$em->remove($pais);
$em->flush();
$this->addFlash('success','País eliminado');
return $this->redirectToRoute('pais_index');
}
}
return $this->render('pais/delete.html.twig', [
'pais' => $pais,
'mensaje' => "¿Desea seleccionar el país seleccionado?",
'form' => $form->createView(),
]);
}
public function isDeleted($em, $form, $request, $validator, $pais){
$bandera = $em->getRepository(Pais::class)->countDepartamentos($pais);
if ($form->isSubmitted()){
if(!$bandera){
if($form->isValid()){
return true;
} else {
$this->showValidations($request, $validator, $pais);
}
} else {
$request->getSession()->getFlashBag()->add('error',
"Hay departamentos usando este país");
}
}
return false;
}
/**
* Método para mostrar las validaciones realizadas a la entidad
*
* @param Request $request
* @param ValidatorInterface $validator
* @param type $pais
*/
public function showValidations(Request $request, ValidatorInterface $validator, $pais){
$errores = $validator->validate($pais);
if(count($errores)){
$request->getSession()->getFlashBag()->add('error', $errores[0]->getMessage());
}
}
Pensaba que existía un Asset como UniqueConstraint o algo por el estilo para evitarme el hacer esto. De todos modos muchas.
PD: Voy a poner otra discusión porque este otro problema que tengo la verdad me re inquieta.