【问题标题】:Symfony: Weird routing issueSymfony:奇怪的路由问题
【发布时间】:2010-04-02 18:06:08
【问题描述】:

我在 symfony 中有以下 URL(具体不重要):

/frontend_dev.php/something/25/apple

...和一个路由规则:

/something/:id/:word

在网站上单击该 URL 时可以正常工作,但在我输入 URL 时却不行。相反,symfony 说:

Unable to find a matching route to generate url for params "NULL".

奇怪的是,我可以导航到这个页面并且它可以工作,但是当在浏览器地址栏中按 Enter 时,它不再找到它。

对于一般情况下可能导致这种情况的原因有什么想法吗?

我还应该补充一点,早先在地址栏中输入时,该 URL 工作正常,但现在不行了,我不确定有什么可能会干扰它。

提前致谢。

更新:

确切的路由规则:

profile:
  url:    /profile/:id/:un
  param:  {module: profile, action: profile}

更新:

调试工具栏日志(高亮部分):

Unable to find a matching route to generate url for params "NULL". Toggle debug stack
#4 » in sfException::outputStackTrace() from SF_ROOT_DIR\lib\vendor\symfony\lib\exception\sfException.class.php line 110
#3 » in sfException->printStackTrace() from SF_ROOT_DIR\lib\vendor\symfony\lib\controller\sfFrontWebController.class.php line 52
#2 » in sfFrontWebController->dispatch() from SF_ROOT_DIR\lib\vendor\symfony\lib\util\sfContext.class.php line 170
#1 » in sfContext->dispatch() from SF_ROOT_DIR\web\frontend_dev.php line 13

已解决:

找到了……

我在失败页面的代码中有这个:

<?php echo link_to(__('Back to previous page').' &#8250;', $sf_request->getReferer()) ?>

在bar中输入地址时引用失败。

【问题讨论】:

  • 调试工具栏的日志部分告诉你它匹配或不匹配的路由是什么?你确实启用了默认路由/:module/:action
  • @Raise:添加了上面的调试位。是的,在 routing.yml 底部启用了默认路由(并且已找到,已测试)。
  • @Raise:感谢您的帮助。

标签: url parameters routing symfony1 request


【解决方案1】:

除非您忘记提及您通常从表单导航到此页面,并且缺少 POST 数据会扰乱路由;我认为这不是 - 这肯定是您的浏览器的问题。

您是否在系统上的其他浏览器中尝试过此操作?

如果您仍有问题,可以复制到您的routing.yml 的相关部分吗?

【讨论】:

  • @Steve:谢谢,页面非常标准,没有 POST。 FF 和 IE 中存在问题(因此假设与浏览器无关)。已尝试清理会话数据和 symfony 缓存。我将在上面的问题中添加路由。
【解决方案2】:

我在实时站点上收到此错误消息,发现问题是由数据库中的字段动态填充的 link_to 命令。

但是该字段为空,因此 link_to 没有收到链接信息。

【讨论】:

  • 是的,完全相同的问题。在我的情况下,Referer 为 NULL,它被传递到 link_to。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-29
  • 2016-01-14
  • 2015-07-10
  • 1970-01-01
  • 2017-09-10
  • 2011-05-20
  • 1970-01-01
相关资源
最近更新 更多