访问路由中的用户对象


accessing User object in route

我有以下路线:

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

正如您所看到的,该路由通过findBySlug方法从数据库中提取一个Work对象,而slug列是workname。这一切都很好,但我希望它能提取连接用户的作品,所以如果两个用户有相同的作品名称,它会选择正确的作品。

比如:->andWhere('w.user_id = ?', $this->getUser()->getId(),如果你喜欢的话。。

当然,我可以将路由url更改为:username/work/:workname,但它看起来不那么专业,也没有必要,因为每个用户只能编辑自己的作品。

有什么办法做到这一点吗?也许如果我可以访问路由中的User对象,我可以这样做,但我找不到如何访问。。

提前感谢!

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

在使用它之前,请阅读为什么sfContext::getInstance()不好,这样你就知道它的问题了。

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

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

编辑:

我还没有尝试过,但看看:

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

如果你能找到一些有用的东西,请通知,我也想知道[并更改这个答案]