Url 路由占位符匹配正则表达式
Url Routing Placeholder Matching Regex
我正在构建自己的学习框架,目前进展顺利,除了一件事,即路由。
假设 url 是 localhost/admin/view,我将该路由与正确的控制器和操作匹配没有问题。当 url 具有如下所示的 ID 时会出现此问题:localhost/admin/view/12。我正在尝试在我的路由数组(框架方法)中使用占位符,其中包含与 url 匹配的已定义路由。
路由数组如下所示:
public function getRoute() {
$this->route = array(
[
'url' => "admin/view",
'controller' => 'AdminController',
'action' => 'viewPosts',
'type' => 'GET'
],
[
'url' => "admin/view/{id}",
'controller' => 'AdminController',
'action' => 'viewPostById',
'type' => 'GET'
],
[
'url' => "admin/store/posts",
'controller' => 'AdminController',
'action' => 'storePosts',
'type' => 'POST'
],
);
}
我不知道如何将 url 与具有占位符的路由数组中的值相匹配。就像 url 是 localhost/admin/view/1 我如何将它与数组中的值 admin/view/{id} 匹配?然后如何从 url 轻松获取 GET 参数?我知道获取参数不应该太难,但我试图在不破坏 url 和做太多操作的情况下获取它们(也许使用正则表达式?)。
你应该在路由匹配中使用其他方法。我建议您看看其他框架是如何处理它的(搜索并查看 .htaccess 是如何工作的)。
所以你应该使用正则表达式来处理匹配,在 admin/view/{id} 的情况下,你可以考虑这样的事情: admin/view/.*
对于这种情况,admin/view/
之后的所有内容都是您的 ID。
您还可以阅读其他框架的文档,例如 cakephp:https://book.cakephp.org/3.0/en/development/routing.html
在php中我们有获取查询字符串的函数:$_SERVER['QUERY_STRING'] (http://se2.php.net/reserved.variables.server.php)
此致。
我正在构建自己的学习框架,目前进展顺利,除了一件事,即路由。
假设 url 是 localhost/admin/view,我将该路由与正确的控制器和操作匹配没有问题。当 url 具有如下所示的 ID 时会出现此问题:localhost/admin/view/12。我正在尝试在我的路由数组(框架方法)中使用占位符,其中包含与 url 匹配的已定义路由。
路由数组如下所示:
public function getRoute() {
$this->route = array(
[
'url' => "admin/view",
'controller' => 'AdminController',
'action' => 'viewPosts',
'type' => 'GET'
],
[
'url' => "admin/view/{id}",
'controller' => 'AdminController',
'action' => 'viewPostById',
'type' => 'GET'
],
[
'url' => "admin/store/posts",
'controller' => 'AdminController',
'action' => 'storePosts',
'type' => 'POST'
],
);
}
我不知道如何将 url 与具有占位符的路由数组中的值相匹配。就像 url 是 localhost/admin/view/1 我如何将它与数组中的值 admin/view/{id} 匹配?然后如何从 url 轻松获取 GET 参数?我知道获取参数不应该太难,但我试图在不破坏 url 和做太多操作的情况下获取它们(也许使用正则表达式?)。
你应该在路由匹配中使用其他方法。我建议您看看其他框架是如何处理它的(搜索并查看 .htaccess 是如何工作的)。
所以你应该使用正则表达式来处理匹配,在 admin/view/{id} 的情况下,你可以考虑这样的事情: admin/view/.*
对于这种情况,admin/view/
之后的所有内容都是您的 ID。
您还可以阅读其他框架的文档,例如 cakephp:https://book.cakephp.org/3.0/en/development/routing.html
在php中我们有获取查询字符串的函数:$_SERVER['QUERY_STRING'] (http://se2.php.net/reserved.variables.server.php)
此致。