1

我已经建立了一个网站。如果我尝试单击诸如注册之类的链接,则会收到以下错误:

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

链接是使用生成的

<?php 
    print link_to( 'Register', 'register/index' ); 
?>

我在应用程序/前端/模块/注册中有一个“注册”模块。

我对 Symfony 很陌生,感谢任何帮助!


路由.yml:

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

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

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

7 回答 7

1

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

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

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

采用

default:
  url: /trevelyan.alumni/:module/:action/*
于 2009-03-13T11:15:16.207 回答
1

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

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

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

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

于 2009-03-13T11:34:44.160 回答
1

我设法通过编辑 symfony 控制器文件来解决这个问题,以使用 $_SERVER 变量来选择一个模块,如果没有找到的话。

于 2009-03-15T11:11:59.497 回答
1

在您的routing.yml文件末尾:

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

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

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

于 2011-09-08T14:10:38.853 回答
0

快速说明一下,要使路由更改生效,您必须运行 symfony clear cache:

./symfony clear-cache
于 2009-03-13T23:31:03.067 回答
0

由于默认路由规则,您应该从匹配的 url 中删除一个点以进行路由

将您的默认路由更改为:

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

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

于 2009-03-17T10:47:39.413 回答
0

我已经从 symfony 1.2 升级到 1.4,并且遇到了这个问题。归根结底,基本上配置文件都已经发生了足够的变化,以至于路由以某种方式中断了。浏览应用程序配置文件并将它们与 lib/vendor/symfony/lib/config/config 中的“新应用程序”模板进行比较/更新(或者您保存 symfony 的任何位置)修复了这个问题。

于 2009-12-30T09:16:57.910 回答