php - 如何进行 MVC 表单 url 格式化?

标签 php model-view-controller forms rest url-routing

我正在使用 PHP。我想从头开始创建一个 MVC 设置,以了解有关 MVC 工作原理的更多信息。我想使用带有斜杠的干净网址作为参数的分隔符。当涉及到 GET 方法表单时,人们是如何做到这一点的?或者人们会完全避免使用 GET 方法形式吗?

目前我能想到的方式是:

  1. 不要使用 GET 方法表单(尽管在某些情况下这会使用户更难添加书签/链接)。
  2. 使用 AJAX 而不是表单提交(尽管您对 SEO 和 JS 禁用程序做了什么?)。
  3. 让页面使用 post 方法提交给自己,然后将 post vars 改造成一个 url,然后使用 header 重新路由到该 url(似乎是浪费资源)。

欢迎提出任何建议或建议阅读。

最佳答案

你可以像这样使用.htaccess文件

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

所以...如果 url 是

http://example.com/controller/action/param1/

你可以路径 Controller 和 Action ,index.php 接收 var url [string]
你可以拆分它们来加载 Controller ......就像

$params = explode('/', $_GET['url']);
$controller = new $params[0];//load the controller
$controller->$params[1]($params[2]);//ejecute the method, and pass the param

关于php - 如何进行 MVC 表单 url 格式化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4627854/

相关文章:

jquery - 通过 AntiForgery Token 提交多个 AJAX 表单

php - 有没有一种方法可以记录用户在 MySQL 数据库中提交表单的浏览器

php/mysql 显示来自所选复选框的数据

javascript - 如何让javascript填充文本区域

model-view-controller - CFWheels - 过滤器问题 'except'。冲突的 Action 名称

php - ZF2 headLink 辅助订购

javascript - AngularJS 中指令(和其他部分)之间的通信

php - Woocommerce - 如何隐藏小数点后第二位后的尾随零?

php - 如何在 foreach 循环/if 语句中保留变量值

javascript - BootstrapValidator 未显示成功消息