Zend Framework 中的国家、省份、城市、产品路由

2024-02-21

这个url结构是为了SEO优化而提出的。所以建议另一种结构是行不通的。提议的结构是

example.com/<language>/<country>/<province>/<city>/<product>

example.com/en/spain我想指出CountryController indexAction,因为每个人的看法都不同,有时觉得布局也有变化。

显示有关西班牙国家的英语内容。对于一个请求example.com/en/india应该用英语展示印度,并且example.com/es/spain应该显示西班牙国家的西班牙语页面。

example.com/en/spain/barcelona指着CountryController provinceAction

西班牙巴塞罗那省的英语内容页面。

example.com/en/spain/barcelona/barcelona指着CountryController cityAction

西班牙国家巴塞罗那省巴塞罗那市的内容页面(英语)。

example.com/en/spain/barcelona/barcelona/taxis指着CountryController productAction

西班牙国家巴塞罗那省巴塞罗那市的产品内容页面,采用英语。

是的,我们可以添加一条路线,例如

$router = $ctrl->getRouter();
$router->addRoute(
    'country_spain',
    new Zend_Controller_Router_Route('spain',
                                     array('controller' => 'country',
                                           'action' => 'index'))
);

但在这种情况下,我们需要将整个国家/地区列表添加到路线中。即印度、中国、巴基斯坦、美国等。

然后将添加country_province

$router = $ctrl->getRouter();
$router->addRoute(
    'country_spain_barcelona',
    new Zend_Controller_Router_Route('spain',
                                     array('controller' => 'country',
                                           'action' => 'province'))
);

因此,如果我们有 50 个省份,那么将国家/地区数量乘以国家/地区的省份数量相加将会很糟糕,并且当移动到城市和产品时,这将变成更多的路线。

你可能会说添加类似的东西

$router = $ctrl->getRouter();
$router->addRoute(
    'country',
    new Zend_Controller_Router_Route('country/:country/:province/:city/:product',
                                     array('controller' => 'country',
                                           'action' => 'index'))
);

但在这种情况下,我们将指向相同的操作,但随着请求的视图发生变化,这将成为一个胖控制器。

问题在于Zend_Controller_Router_Route_Regex http://framework.zend.com/manual/1.11/en/zend.controller.router.html#zend.controller.router.routes.regex我们应该有类似的东西example.com/en/country/spain/barcelona/barcelona/taxis并且所有动作都集中在一个动作上。由于视图完全不同,因此变得肮脏。可能是我可以使用的部分。但我想知道是否还有其他好的解决方案来解决这个问题。这是一个遗留项目,所以我对其有限制,#ZF 版本是 1.6。

有一个类似的例子

http://www.travelportal.info/ http://www.travelportal.info/http://www.travelportal.info/asiahttp://www.travelportal.info/asia/india http://www.travelportal.info/asia/indiahttp://www.travelportal.info/asia/india/business-currency-economy

你觉得怎么样,他们这样做了,会不会增加至少亚洲、欧洲之类的航线?

我能够让它像

example.com/en/spain指向CountryController indexAction

example.com/en/spain/barcelona指向CountryController provinceAction

example.com/en/spain/barcelona/barcelona指向CountryController cityAction

example.com/en/spain/barcelona/barcelona/taxis指向CountryController productAction

但我需要添加 4 条路由,这样手动添加路由会变得很困难。

欢迎提出建议和批评,以便做得更好。


您似乎希望为每个示例场景都有一个单独的路线,例如:

$router->addRoute(
    'product',
    new Zend_Controller_Router_Route(':lang/:country/:province/:city/:product', array(
        'controller' => 'country',
        'action' => 'product'
    ))
);

$router->addRoute(
    'city',
    new Zend_Controller_Router_Route(':lang/:country/:province/:city', array(
        'controller' => 'country',
        'action' => 'city'
    ))
);

$router->addRoute(
    'province',
    new Zend_Controller_Router_Route(':lang/:country/:province', array(
        'controller' => 'country',
        'action' => 'province'
    ))
);

$router->addRoute(
    'country',
    new Zend_Controller_Router_Route(':lang/:country', array(
        'controller' => 'country',
        'action' => 'index'
    ))
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Zend Framework 中的国家、省份、城市、产品路由 的相关文章

  • 基于标准 PHP 查询字符串的路由

    如您所知 Zend Framework v1 10 使用基于斜杠分隔的参数的路由 例如 server controllerName actionName param1 value1 param2 value2 问题是 如何强制 Zend F
  • 如何在 Zend Framework 中的 URL 开头添加变量?

    我正在尝试在这里创建网址 例如 admin login moderator login 这两个请求都将由相同的控制器提供服务并执行登录操作 即 account login
  • 使用 ZF 使 Zend_Rest_Server 返回 JSON 而不是 XML

    Zend Rest Server 可以返回 Json 吗 如果没有 有什么替代方案 其他库建议也可以 Zend Rest Server 输出 XML 尽管文档中没有明确指定 有一些替代方案 您可以利用 Zend Framework 提供的整
  • 原则 2 关联映射的分页

    我想知道如何对从原则 2 中的实体关联映射获得的结果进行分页 例如 class Customer OneToMany targetEntity Order private orders 可以这样使用 customer gt getOrder
  • 在 zend 框架中运行控制器单元测试时出现“没有为此应用程序定义默认模块”异常

    我有一个具有默认目录结构的应用程序 对于没有自定义模块的应用程序 请参阅最后的结构图 我按照许多教程中的说明编写了一个 ControllerTestCase php 文件 并且还创建了相应的引导文件 再次参见最后的图 我已经编写了一些运行良
  • Zend_Form -> 很好地更改 setRequired() 验证消息

    假设我创建一个像这样的文本元素 firstName new Zend Form Element Text firstName firstName gt setRequired true 更改默认错误消息的最佳方法是什么 值为空 但非空值 是
  • 提交时使用 ajax 将子表单添加到表单

    我读了这篇文章 http www jeremykendall net 2009 01 19 dynamically adding elements to zend form http www jeremykendall net 2009 0
  • Zend_Forms、控制器放在哪里?模型?别的地方?

    构建 Zend Forms 的代码最好放在哪里 我曾经把这个逻辑放在我的控制器中 但在我需要在不同的地方使用相同的表单后 我就放弃了这个逻辑 这意味着我必须在不同的控制器中重复创建表单 因此 我将表单创建代码移至我的模型中 这看起来正确吗
  • Zend Framework:重用从 Zend_Db_Select::getPart() 返回的 WHERE 子句

    我有一个包含 WHERE 的 SELECT 对象 我可以使用返回 WHEREgetPart Zend Db Select WHERE 这会返回类似这样的内容 array 0 gt string clienttype agent 1 gt s
  • Doctrine2 和 Zend 框架中的多个数据库连接

    我目前正在开发一个使用 ZF 1 11 3 构建的应用程序 Doctrine2 是使用的 ORM 组件 我需要使用多个数据库 在 application ini 文件中 我将数据库连接设置如下 resources doctrine dbal
  • Zend 反向匹配路由返回当前 URL

    我正在使用 Zend Framework 并尝试设置一些自定义路由 这些在调度期间似乎工作正常 但反向匹配根本不起作用 这些是我设置的路线 router gt addRoute category new Zend Controller Ro
  • 日期未保存在mysql数据库中

    我在 MySQL 数据库中保存日期时遇到问题 测试一切 我正在尝试将 2010 01 01 例如 保存在 MySQL 数据库中 首先 我将 MySQL 字段设置为最新 这不起作用 但是当我将字段设置为字符串类型时 它确实将日期保存在数据库中
  • Adobe Reader 无法打开在 Zend Framework 中使用 mPDF 创建的 .pdf 文件

    我正在尝试在 Zend Framework 应用程序中使用 mPDF 从操作的输出生成 pdf 文件 这是我的操作代码 public function testAction this gt helper gt viewRenderer gt
  • 每个月的第一天

    如果我从当前日期开始 如何获得每个月的第一个星期五 我正在考虑使用 date gt get Zend WEEKDAY 并将其与星期五进行比较 然后与 DAY 进行比较 并检查它是否小于或等于 7 然后添加 1 个月 一定有更简单的东西吗 怎
  • 禅德导航。带有自定义选项的子菜单

    在我的布局脚本中 我也需要生成 渲染我的菜单 如果菜单项有一个子菜单 我会更改我的菜单项 以便它会呈现 li 原因是我会有一张图片 li li 网页元素存在 ul li a href da front news Nyt a li li cl
  • Lucene外来字符问题

    我在使用 Zend Lucene 和 等外来字符时遇到了一些严重的问题 这些问题在创建索引和查询索引时都会出现 我已经尝试过 iso 8859 1 和 utf 8 ISO 8859 1 不起作用的查询看起来像 area sk ne 使用 Z
  • MYSQL中如何获取不带小数的列值

    我的 mysql 表中有两列A and B我正在获取这样的记录 select A B from table 但问题是上面的查询提供了类似这样的值 12 00 3 4 78 9 但我想得到这样的结果 12 3 78 我将使用哪个 MySQL
  • Zend_Controller_Router_Route:找不到翻译器

    我正在开发一个多语言应用程序 在引导程序中有路由设置 protected function initRoutes this gt bootstrap frontController router this gt frontControlle
  • Zend url:获取参数始终保留在 url 中

    我在使用带有 get 参数的 Zend url 帮助器时遇到一些问题 在一个视图中 我有分页 它在 get 中发送额外的参数 所以在 url 中 所以没关系 但这是不行的 即使我更改页面 参数也始终保留在 url 中 事实上 zend ur
  • php 或 zend 中国际电话号码验证的正则表达式是什么?

    我有一个 zend 表单 其中有一个电话号码字段 并且必须检查验证器 我决定为此使用正则表达式 我搜索了谷歌 但我得到的结果不起作用 谁能给我提供正则表达式 这是我的代码 phone new Zend Form Element Text p

随机推荐

  • 以编程方式更改 IE 设置

    我正在尝试制作一个 Windows 应用程序 将 URL 添加到 IE 的 受信任站点 中 这部分有效 解决方案 http www nakov com blog 2009 05 15 c code for changing internet
  • PySimpleGUI 滑块有小数范围吗?

    我需要某种方法来在 PySimpleGUI 中的滑块上方显示十进制值 我已经尝试过输入十进制值 但是当我这样做时它会抛出错误 import PySimpleGUI as sg layout sg Slider range 850 999 d
  • 将 AjaxOnlyAttribute 和 ChildActionOnlyAttribute 组合到一个操作过滤器中

    我希望能够在控制器上标记一个动作 以便通过 ajax 调用和 RenderAction 来调用 问题在于这两个属性派生或实现不同的抽象 一种出路是下一个 AjaxOnly PartialViewResult GetViewAjax int
  • 当不使用字符串操作时,GCC 11 给出 -Wstringop-overflow

    这是我的代码 test c include
  • Swift 中的纯类协议

    我希望我的一些课程 不是全部 符合使用 仅限类的协议 https developer apple com library ios documentation Swift Conceptual Swift Programming Langua
  • 使用 MS Access 中的 GUID pk 插入 SQL Server 表

    我正在将数据库从 Access 后端迁移到 SQL Server 后端 同时保留 Access 前端 其中一张表设置了其 PK 的复制 ID 作为 Access DB 我们可以将值插入到该表中 而无需引用 PK 字段 因为 Access 会
  • 使用 jquery 选择最近的锚元素

    我有一张带有一个链接的表 如下所示 td a href class topiclink item Topic a td 我想选择 item topic的数据 我尝试使用 topiclink click function e var val
  • CoreData 无法完成以下错误:

    我有一个非常烦人的问题 我似乎无法解决 当我发送一条消息并保存到核心数据时 我有一个视图 完成后它会向数据库询问随机消息 句子 并将其保存到数据库中的另一行 如果我对最后一部分进行硬编码 而不从数据库中获取数据 那么它工作得很好 但是一旦我
  • 如何让 FTP-Simple 在 Visual Studio Code 中工作?

    我最近选择开始使用 Visual Studio Code 我想连接到远程服务器并直接在服务器上编辑文件 FTP Simple 似乎是一个很好的解决方案 但我很难理解该程序的一些基础知识 如果我连接到服务器 FTP Simple 是否会下载a
  • Service Worker 和 AppCache 的比较

    Service Worker 和 AppCache 之间的核心区别是什么 每种方法的优点和缺点是什么 何时更喜欢其中一种 主要区别在于 AppCache 是一个高级声明式 API 您可以使用它指定希望浏览器缓存的资源集 而 Service
  • 使用 Shibboleth 和 Google App Engine java 实现 SSO

    我正在开发一个应用程序谷歌应用引擎在Java中 在这个应用程序中我必须实现SSO using SAML2 我的谷歌应用程序引擎应用程序将充当服务提供商 而身份提供商将是一个单独的服务器 我只需编写 SSO 的 SP 端 我是 SAML 新手
  • 分离使用 python 多处理模块启动的子进程

    我想使用 python 中的 mutliprocessing 模块创建一个进程 但确保它在创建子进程的进程退出后继续运行 我可以使用 subprocess 模块和 Popen 获得所需的功能 但我想将代码作为函数而不是脚本运行 我想这样做的
  • 如何在 Mac 上更改 R 版本

    我正在尝试使用旧版本的 R 在 Mac 上运行包 在 Windows 上 常规 选项卡中有一个开关 但是 在 Mac RStudio 上找不到它 我参考了这个帖子 https support rstudio com hc en us art
  • 使用 gson 反序列化内部类返回 null

    我想使用 Gson 将 JSON 反序列化为对象 我已经定义了适当的类 其中一些类的对象包含在其他对象中 当尝试反序列化整个 JSON 时 我得到了空值 因此我开始将其分解 我达到了所有较低类都站在自己一边的地步 但是当尝试反序列化为包含该
  • 从 UserAgent 字符串创建 HttpBrowserCapabilityBase

    So the Http请求库 http msdn microsoft com en us library system web httprequestbase aspx类有一个浏览器属性 http msdn microsoft com en
  • Azure Devops - 更新 json 文件 - powershell 脚本

    我创建了 powershell 脚本来使用变量更新 json 文件 Json 文件位于 Azure Devops 存储库中 json 文件名为 var json 我将在 azure devops 中使用此解决方案 因此我构建了管道并在 az
  • WebGet 在功能上等同于 WebInvoke(Method = "GET") 吗?

    This https stackoverflow com questions 1072556 wcf webgetattribute vs webinvokeattribute问题已经问了我要问的问题 但我想对答案进行一些澄清 答案指出We
  • java中如何将列表数据转换为json

    我有一个函数将数据返回为List在java类中 现在根据我的需要 我必须将其转换为Json Format 下面是我的函数代码片段 public static List
  • 计算另一个计数结果出现的次数

    我们有一张表叫做entries它根据日期存储用户信息 用户每天只能进入数据库一次 一些示例数据 id email date 1 email protected cdn cgi l email protection 04 09 13 2 em
  • Zend Framework 中的国家、省份、城市、产品路由

    这个url结构是为了SEO优化而提出的 所以建议另一种结构是行不通的 提议的结构是 example com