如何在Symfony中使用getRoute获取对象的翻译?

时间:2010-02-11 18:46:20

标签: routing model symfony1 translation

我有几个翻译模型。当我加载

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

例如,它让我获得了Tour对象。但是,它不会加入tour_translation表;所以当我试图获得它的标题后; symfony进行另一个SQL查询。

我如何覆盖某些东西,所以在Tour模型中,当我要求对象时,它会返回当前文化中的翻译对象。

我一直在查看sfObjectRoute class,看看我是否可以覆盖任何方法,但我现在不确定

我知道我可以做到以下几点,但我更喜欢第一个选项,因为它更透明和优雅:

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

谢谢!

1 个答案:

答案 0 :(得分: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时可用: - )