我有以下路线:
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
,但它看起来不太专业,而且不是必需的,因为每个用户只能编辑自己的工作。
有任何想法如何完成这项工作?也许如果我可以访问路线中的用户对象我可以做到,但我无法找到如何..
提前致谢!
答案 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,以便了解它的问题。