php - 你能强制 symfony 解析到特定的路由吗?

标签 php routes symfony1

假设我必须按以下顺序遵循 2 条路线:

Zip:
  url: home/:zip
  param: { module: home, action: results }

State:
  url: home/:state
  param: { module: home, action: results }

我使用的路线如下:

'@State?state=CA'

为什么它会解析为 Zip 路线? 我认为当您显式指定路由名称:“@State”时,它没有解析整个路由文件,而只是使用您要求的特定路由。

我希望能够使用相同的操作来根据变量名称(zip 或状态)显示数据,我不想为了传递不同的参数而两次创建相同的操作(结果) .

最佳答案

您需要添加要求,以便它能够识别不同的格式

Zip:
  url: home/:zip
  param: { module: home, action: results }
  requirements: { zip: \d{5} } # assuming only 5 digit zips

State:
  url: home/:state
  param: { module: home, action: results }
  requirements: { state: [a-zA-Z]{2} }

这应该可以解决这个问题,尽管我同意你的观点,当你在助手中使用路由名称时,它应该使用命名的路由。

关于php - 你能强制 symfony 解析到特定的路由吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/644740/

相关文章:

php - 为什么 PHP 在[宽松地]比较两个数字字符串之前将它们转换为数字?

php - 很难查询数据库

matrix - OSRM距离矩阵

php - 如何在 Propel 中使用 MySQL 函数

php - 交响乐 : escape single quote string from database?

php - 我如何在 Laravel 中执行变量/通配符路由?

php - 检索属于 session 和用户 ID 的数据

寻找路线上兴趣点的算法?

ruby-on-rails-3 - 尝试通过 routes.rb 强制 SSL 后,我的登录路由不起作用

php - Symfony 更新模型架构