如何在symfony2中获取存储库类中的控制器对象

时间:2013-09-26 09:41:33

标签: symfony

如何在Symfony2的存储库类中使用“NotFoundException”?

$test = $em->getRepository('DemoBundle:Test')->find(1);

if (!$test) {
    throw $this->createNotFoundException('The category area does not exist. Id 1');
}

2 个答案:

答案 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 %}