我有以下路线:
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/
如果你能找到一些有用的东西,请通知,我也想知道[并更改这个答案]