2013-01-11 46 views
3

控制器操作以確保我的行動,以適當的事務處理,我發現自己在我的控制器,一遍又一遍的重複驗證碼:尋找@Transaction在Symfony2的

/** 
* @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,這將是類似容器管理的事務。

這是否有捆綁包(或其他很好的解決方案)?

回答

2

由於我沒有找到解決方案,我決定創建一個解決方案。

PluessDoctrineTrxBundle完全符合我的要求。 Yous爲你的行爲添加一個註釋,所有的學說操作都包含在一個轉換中。