php - 基于 MVC 基础的动态路由 - i18n 和 l10n

标签 php model-view-controller routing url-rewriting internationalization

我最近一直在提高我的网络编程技能,以遵循更健全、更易于维护的 MVC 编码风格。然而,我曾经用我的“自己动手”框架做的一件事是基于 mod_rewrite 的灵事件态路由。这似乎是 cakephp、zend 等东西的一个棘手问题。它试图复制我拥有的功能,这让我有些头疼。

在您自己的上下文中,您可以执行以下操作:

<custom htaccess rules before>
RewriteRule    ^([A-Za-z0-9-/]+)$    index.php?q=$1   [NC,L]

将所有匹配的 url 重写为处理 url 的任意脚本,将 "/abc-123/abc-456/controller-value" 等的组合解析为任何页面或操作列表,函数等可以从数据库表设置,硬编码,bla bla ..之前的自定义规则可以通过对服务器上资源存在的文件的匹配请求,或设置管理路由等。

但是,一旦 MVC url 策略生效,就很难用对外界隐藏应用程序逻辑的东西来覆盖此行为。我从来没有真正理解为什么有人想要向用户公开函数名称,这是我真正的烦恼。从可用性和安全性的角度来看,这似乎是不必要的,而且强加于人。

那么 - 问题是,如何在为应用程序维护坚实的 MVC 基础的同时实现重写、可翻译和友好的 url 策略?

先决条件:

  • 没有暴露应用程序逻辑
  • 可翻译的 URL (i18n)
  • 动态且能够添加、删除、编辑 URL 或页面,而无需触及应用程序代码

欢乐时光! :D

示例网址:

/en/news/story-title
/pt/noticias/titulo

其中 url 根据传递的语言字符串检索本地化内容。

最佳答案

MVC 只是一种架构模式,与 URL 结构无关。使用自定义路由层不会以任何方式破坏 MVC。如果集中式路由适合您,那么,例如,您可以拥有一个配置文件,将 URL 模式(正则表达式或某种简化的语法)映射到 Controller 操作。

关于php - 基于 MVC 基础的动态路由 - i18n 和 l10n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1991631/

相关文章:

model-view-controller - 如何在 IIS 7.5 中为 MVC Web 应用程序正确配置路由

android - 带 map 和路线的 Android 项目要使用哪些库?

java - Play Framework 2.1-RC2 : NoSuchFieldError's created by reverse routing in templates

php - 如何在mysql查询中写入字符串变量?

php - 24 小时后过期的 SQL 条目

php - 排序和显示自定义帖子类型 Wordpress

php - 如何对 MVC 类进行单元测试?

php - 将数据从 MySQL 数据库加载到下拉列表单击的文本框中

c# - 在 MVC 中删除浏览器自动完成

laravel - 如何在 Laravel 中使用 Regex 路由前缀?