link_to()成功生成路由,但单击该链接会生成404

时间:2009-03-13 00:48:54

标签: php symfony1

我已设置website了。如果我尝试点击register之类的链接,我会收到以下错误:

404 | Not Found | sfError404Exception
Empty module and/or action after parsing the URL 
    "/trevelyan.alumni/register" (/).

使用

生成链接
<?php 
    print link_to( 'Register', 'register/index' ); 
?>

我在apps / frontend / modules / register中有一个'register'模块。

我是Symfony的新手,感谢任何帮助!


的routing.yml:

# default rules
homepage:
  url:   /
  param: { module: home, action: index }

default_index:
  url:   /:module
  param: { action: index }

default:
  url:   /trevelyan.alumni/:module/:action/*

7 个答案:

答案 0 :(得分:1)

我认为您的问题是您正在从“子网站”运行symfony,而不是直接从“根”网址(http://www.dur.ac.uk/trevelyan.alumni而不是http://www.dur.ac.uk/)运行。我认为最简单的解决方案是将trevelyan.alumni添加到routing.yml中所有网址的前面。

例如,对于default路线,而不是

default:
  url: /:module/:action/*

使用

default:
  url: /trevelyan.alumni/:module/:action/*

答案 1 :(得分:1)

阅读Steven Oxley,但也试试这个:

检查你的模块目录中是否至少有一个具有正确名称的动作类(symfony区分大小写,这非常棘手)。

如果这样做,请检查默认操作(在模块配置文件中)是模块中的操作类之一。

每次更改配置文件时都不要忘记清除缓存。

答案 2 :(得分:1)

我设法通过编辑symfony控制器文件来修复此问题,以便使用$ _SERVER变量从中挑选模块(如果找不到)。

答案 3 :(得分:1)

routing.yml 文件末尾

homepage:
  url:   
  param: { module: main, action: index }

default:
  url:   /:module/:action/*

并且不要忘记之后清除缓存;)

答案 4 :(得分:0)

请注意,要使路由更改生效,您必须运行symfony clear cache:

./symfony clear-cache

答案 5 :(得分:0)

由于默认路由规则,您应该从匹配的网址中删除一个点

将您的默认路线更改为:

default:
  url: /trevelyan_alumni/:module/:action/*

这应该有效。请注意,点(。)替换为_

答案 6 :(得分:0)

我已经从symfony 1.2升级到1.4,并且遇到了这个问题。在一天结束时,基本上配置文件已经变得足够多,以至于路由以某种方式破坏了。浏览应用程序配置文件并将它们与lib / vendor / symfony / lib / config / config中的“新应用程序”模板进行比较/更新(或者您保留symfony的位置)修复了此问题。