我有以下路由配置:
entry:
class: sfDoctrineRouteCollection
options:
model: ProjectEntry
module: entry
prefix_path: /entry
column: slug
with_show: false
model_methods:
{ object: getEntryBySlug }
requirements:
slug: \w+
其中,使用symfony app给出了以下输出:routes:
entry_edit GET /entry/:slug/edit.:sf_format
在lib / model / doctrine / ProjectEntryTable.class.php我有以下方法:
public static function getEntryBySlug($parameters)
{
return Doctrine_Core::getTable('ProjectEntry')->findOneBySlug($parameters['slug']);
}
但是,当我输入以下URL时:
frontend_dev.php /进入/我的段塞/编辑
我收到以下错误:
404 |找不到| sfError404Exception
解析URL“/ entry / my-slug / edit”后的空模块和/或操作(/)。
(假设my-slug是ProjectEntry表中某些记录的有效slug)
我没有找到这个错误的原因,我可能做错了什么?
据我所知,问题在于路由配置(但在哪里?!),因为即使我尝试在我的executeEdit动作上调试一些东西,我也注意到我甚至没有到达那里。 (如果需要,我可以在这里发布更多代码/输出......)
任何想法都深深感激......
答案 0 :(得分:0)
好的,明白了!
我只需要删除slug的要求就是这样。
问题是sfDoctrineRouteCollection(也许是其他sfObjectRouteCollections?任何人都知道?)生成其路由,如编辑一样,如下:
prefix/column/edit
因此,如果列具有\ w +要求,则基本上说前缀后面的任何内容都是列的一部分,包括'/ edit'部分。删除需求加载默认值([^ / \ \。] +),据我所知的正则表达式说下一个'/'是限制...
抱歉这样一个新手问题,但现在已经解决了......