Symfony1 symfony sfDoctrineRouteCollection路由抛出404错误“;解析URL后的空模块和/或操作…“;

Symfony1 symfony sfDoctrineRouteCollection路由抛出404错误“;解析URL后的空模块和/或操作…“;,symfony1,routing,symfony-1.4,Symfony1,Routing,Symfony 1.4,我有以下路由配置: entry: class: sfDoctrineRouteCollection options: model: ProjectEntry module: entry prefix_path: /entry column: slug with_show: false model_methods: { object: getE

我有以下路由配置:

entry:
  class:            sfDoctrineRouteCollection
  options:
    model:          ProjectEntry
    module:         entry
    prefix_path:    /entry
    column:         slug
    with_show:      false
    model_methods:
      { object: getEntryBySlug }
  requirements:
    slug:             \w+
其中,symfony应用程序为我提供了以下输出:路由:

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/entry/my-slug/edit

我得到以下错误:

404 |未找到| SFERROR404异常
解析URL“/entry/my slug/edit”(/)后的空模块和/或操作

(假设我的slug是ProjectEntry表中某个记录的有效slug)

我还没有找到这个错误的原因,我可能做错了什么

据我所知,问题在于路由配置(但在哪里?!),因为即使我尝试在executedit操作中调试某些东西,我也注意到我甚至没有达到目的。(如果需要,我可以在这里发布更多代码/输出…)

非常感谢您的任何想法……

好的,明白了

我只是取消了对slug的要求,就这样

问题是sfDoctrineRouteCollection(可能还有其他sfObjectRouteCollections?有人知道吗?)生成其路由,如编辑路由,如下所示:

prefix/column/edit
因此,如果列有\w+要求,它基本上是说前缀后面的任何内容都是列的一部分,包括“/edit”部分。删除需求将加载默认的需求([^/\\.]+),据我对正则表达式的理解,下一个“/”是限制


很抱歉问了这么一个新手问题,但现在问题已经解决了…

哈维尔,你好!您是否调试了
getEntryBySlug
方法?它到了吗?是的,它到了。。。我知道你已经解决了这个问题。谢谢