我正在构建自己的框架以用于学习目的,到目前为止,除了路由之外,到目前为止一切进展顺利。
可以说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)
问候。
也许我没有很好地解释它,但是我的.htaccess像框架一样使用干净的URL将所有内容重定向到index.php。 我只是要求使用{id}之类的占位符,因为那是laravel的工作方式。 顺便说一句,admin / view /.*我已经尝试过与admin / view /。 d * $类似的东西,但是我发现我不太想与占位符一起使用。 您介意解释一下框架的内部机制通常如何用于路由,而不是如何使用它们,而是更像框架处理URL的方式,即拆分和分派等。