为了确保我的操作能够正确处理事务,我发现自己在控制器中一遍又一遍地重复此代码:
/**
* @Route("/complete", name = "authentication_complete")
*/
public function completeAction(Request $request)
{
$result = null;
try {
$this->getManager()->beginTransaction();
$result = $this->doCompleteAction($request);
$this->getManager()->flush();
$this->getManager()->commit();
} catch (\Exception $e) {
// @codeCoverageIgnoreStart
$this->getManager()->rollback();
throw $e;
// @codeCoverageIgnoreEnd
}
return $result;
}
public function doCompleteAction(Request $request)
{
// do whatever you action is suposed to do
return $response;
}
我想要类似的东西@ManageTransaction
。这将进入操作的注释并为我节省大量重复的代码。在一个完美的世界中,这也会以一种巧妙的方式处理控制器转发。
如果您了解 Java EE,这将类似于容器管理的事务。
对此有捆绑(或其他不错的解决方案)吗?