2010-02-11 90 views
0

我有幾種翻譯模型。當我加載時如何在Symfony中使用getRoute獲取對象的翻譯?

$this->tour = $this->getRoute()->getObject(); 

por例子,它使我得到Tour對象。但是,它不會加入tour_translation表;所以當我嘗試獲得它的標題後; symfony使另一個SQL查詢。

如何重寫某些內容,因此在Tour模型中,當我詢問該對象時,它會將對象與其當前文化中的翻譯一起返回給我。

我一直在尋找的sfObjectRoute class,看看我是否可以覆蓋任何方法,但我現在

我知道我能做到以下幾點我不知道,但我更喜歡第一個選項,因爲它更透明而優雅:

$this->tour = Tour::getTour($request->getParameter('id'), $lang); 

謝謝!

回答

2

你需要在你的路由定義指定通過method選項檢索對象時使用何種方法:

my_route 
    url: /tour/:id 
    options: 
    model: Tour 
    type: object 
    method: getTourForRoute 

params節跳過爲簡潔起見)

注意,該方法將不直接接收id作爲參數,而是傳遞給路由的參數數組,因此您可以編寫如下方法:

public function getTourForRoute($parameters) 
{ 
    return self::getTour($parameters['id']); 
} 

最後說明:此選項僅在使用sfDoctrineRoutesfPropelRoute時纔可用:-)

+0

謝謝!確實如此!我忘了那個選項:-) – fesja 2010-02-11 21:39:44