首页 / PHP / 具有多语言支持的PHP路由
具有多语言支持的PHP路由
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了具有多语言支持的PHP路由,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2296字,纯文字阅读大概需要4分钟。
内容图文
![具有多语言支持的PHP路由](/upload/InfoBanner/zyjiaocheng/776/01e3fa4b4959400981bbe01549d3cfb6.jpg)
我目前正在框架上创建CMS.我制作了我的.htaccess文件,看起来像这样:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z]+)/(.*)$index.php?url=$1 [PT,L]
</IfModule>
我的问题是:
1)可以使用普通的MVC URL访问我的页面:
http://example.com/pages/view/ {的-shorttag的最页}
2)我的页面也可以通过路线访问:
http://example.com/p/ {的-shorttag的最页}
我真正需要实现的是我可以通过两种方式访问??它:
http://example.com/ {的-shorttag的最页}
或者语言支持
http://example.com/ {语言} / {在-shorttag的最页}
我的问题是我不想更改mod_rewrite – 我更想在PHP中创建路由,但是我找不到如何在没有静态的情况下路由到PageController-> view()方法的解决方案条件中的字母(上例中的“p”).
你明白我的问题吗?
你有一些提示,这可能会让我朝着正确的方向前进吗?
解决方法:
这听起来像你需要实现某种路由器.
我亲自面对它,这就是我使它工作得很好的方式:
某些路由器类解析URL.它将URL部分(/ en / controller / action / param1 / paramval1 /)分解为多个部分.它确定语言代码(如果未提供,则为默认值),控制器,操作等.
路由器还向系统的其他部分提供信息(控制器,动作名称,参数),尽管您可以为此目的实现特殊类(例如,请求).
现在系统的不同部分可以通过Router或Request类访问给定的信息.从这里开始,应该很容易实现多语言网站.
再一次,重要的部分是将URL映射到控制器和操作.当然,如果你不想像/ controller / action / parameter1这样的URL,你应该有一些映射表(XML文档/数据库表),它将存根(页面短标记)映射到控制器和动作.路由器读取此表并根据给定规则确定控制器,操作和其他参数.
希望我没有太多复杂:)
更新:
至于我自己,我已经用XML文件实现了映射.让我进一步解释一下:路由器负责解析URL.通常,您的URL将包含控制器和操作名称(在您的情况下,页面是控制器,视图是操作).
现在,在您的情况下,您只需要一个存根,因此路由器必须以某种方式获取有关正在调用哪个控制器和操作的信息.这是映射的目的,将存根映射到适当的控制器和操作.
我已将其实现为静态路由,手动编写到XML文件中,但您可以使用某种插件类来检查存根是否实际与页面相关.如果没有,那可能意味着两件事:它是控制器或请求无效.
让我进一步讨论冲突:如果存根与任何控制器的名称相同,则会发生冲突.您是否应该使用给定存根渲染页面,或者调用控制器?这必须以某种方式解决,也许您可??以以编程方式限制用户拥有具有这种存根的页面.
此外,下次您使用PHP深入了解应用程序开发时,我建议您使用一些众所周知的PHP框架(如果您还没有使用,那么),例如, Zend,Kohana或CodeIgniter.它们都提供路由器和许多其他组件,使开发应用程序更容易,更快速,更安全.
内容总结
以上是互联网集市为您收集整理的具有多语言支持的PHP路由全部内容,希望文章能够帮你解决具有多语言支持的PHP路由所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。