如何在Symfony2的存储库类中使用“NotFoundException”?
$test = $em->getRepository('DemoBundle:Test')->find(1);
if (!$test) {
throw $this->createNotFoundException('The category area does not exist. Id 1');
}
答案 0 :(得分:2)
如果您想在查询没有结果的情况下将(在/内/内)您的存储库中的抛出。然后你应该使用Doctrine\ORM\NoResultException。
顺便说一下,您共享的代码段不应该在您的存储库中使用。
答案 1 :(得分:1)
错误处理的另一种方法是使用会话错误,如
try {
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('product')->find($id);
if (!$entity) {
$this->get('session')->setFlash('warning', 'Unable to find Product.');
}
$em->remove($entity);
$em->flush();
$this->get('session')->setFlash('success', 'Product Detail has been deleted.');
return $this->redirect($this->generateUrl('admin_products'));
} catch (\Doctrine\DBAL\DBALException $e) {
$this->get('session')->setFlash(
'warning', 'This Product cannot be deleted!'
);
return $this->redirect($this->getRequest()->headers->get('referer'));
}
}
在你的树枝模板上使用下面给出的代码。
{% if app.session.hasFlash('success') %}
<div class="alert alert-success">
{{ app.session.flash('success') }}
</div>
{% endif %}
{% if app.session.hasFlash('warning') %}
<div class="alert alert-error">
{{ app.session.flash('warning') }}
</div>
{% endif %}