symfony sfDoctrineRouteCollection路由抛出404错误“解析URL后清空模块和/或操作...”

时间:2011-03-22 22:57:24

标签: symfony1 routing symfony-1.4

我有以下路由配置:

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动作上调试一些东西,我也注意到我甚至没有到达那里。 (如果需要,我可以在这里发布更多代码/输出......)

任何想法都深深感激......

1 个答案:

答案 0 :(得分:0)

好的,明白了!

我只需要删除slug的要求就是这样。

问题是sfDoctrineRouteCollection(也许是其他sfObjectRouteCollections?任何人都知道?)生成其路由,如编辑一样,如下:

prefix/column/edit

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

抱歉这样一个新手问题,但现在已经解决了......