我有几个翻译模型。当我加载
$this->tour = $this->getRoute()->getObject();
例如,它让我获得了Tour对象。但是,它不会加入tour_translation表;所以当我试图获得它的标题后; symfony进行另一个SQL查询。
我如何覆盖某些东西,所以在Tour模型中,当我要求对象时,它会返回当前文化中的翻译对象。
我一直在查看sfObjectRoute class,看看我是否可以覆盖任何方法,但我现在不确定
我知道我可以做到以下几点,但我更喜欢第一个选项,因为它更透明和优雅:
$this->tour = Tour::getTour($request->getParameter('id'), $lang);
谢谢!
答案 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']);
}
最后注意事项:此选项仅在您使用sfDoctrineRoute
或sfPropelRoute
时可用: - )