访问路由中的User对象

时间:2011-06-06 22:24:06

标签: php symfony1

我有以下路线:

work:
  class: acWorkObjectRouteCollection
  options:
    prefix_path: /work
    module:      work
    model:       Work
    type:        object
    column:      workname
    model_methods:
      object: findBySlug

如您所见,此路由通过findBySlug方法从db中提取Work对象,并且slug列为workname。一切正常,但我希望它能够拉动已连接用户的工作,所以如果2个用户拥有相同的工作名称,它将选择正确的工作名称。

类似于:->andWhere('w.user_id = ?', $this->getUser()->getId()如果你愿意......

当然,我可以将路线网址更改为:username/work/:workname,但它看起来不太专业,而且不是必需的,因为每个用户只能编辑自己的工作。

有任何想法如何完成这项工作?也许如果我可以访问路线中的用户对象我可以做到,但我无法找到如何..

提前致谢!

2 个答案:

答案 0 :(得分:0)

你不能只编辑正确的文件并在代码中附加适当的WHERE语句[当然使用andWhere()]吗?这会容易得多。

AFAIR您无法访问symfony路由中的用户数据。在YAML中不会自动。

编辑:

我还没试过,但看看:

http://oldforum.symfony-project.org/index.php/m/85116/

如果你能找到可用的东西,请通知,我也想知道[并改变这个答案]。 ]

答案 1 :(得分:0)

虽然这通常是不好的做法,但我相信这是sfContext::getInstance()无法避免的极少数情况之一。在sfContext::getInstance()->getUser()方法中使用findBySlug

在使用它之前,请阅读Why sfContext::getInstance() Is Bad,以便了解它的问题。