ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简代码的同时,更注重易用性。遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP,甚至允许把你基于ThinkPHP开发的应用开源或商业产品发布/销售。
今天就来给大家分享一下ThinkPHP6中,如何基于多应用定义路由配置。该篇文章需要注意的是,官方文档说的多应用是针对多个域名,而本篇文章是基于同一个域名来实现多应用。
目录说明
第一步肯定是需要安装ThinkPHP6官方框架,这里就直接省略这一步。接下来就是安装多应用的组件包。
代码语言:shell复制composer require topthink/think-multi-app
接下来,创建这样的目录结构。
代码语言:shell复制├── app
│ ├── admin
│ │ ├── controller
│ │ │ ├── admin
│ │ │ └── api
│ │ ├── route
- admin为应用的目录。这里我们创建一个admin的应用。
- admin.controller 为应用的controller层,文章演示用到了分层controller。这里分为api和admin。对应的控制器就在admin和api下进行创建。
- route 为应用的路由文件,在该目录下存在一个
app.php
的文件,为具体的路由文件,所有的应用路由都是定义在这里。
路由定义
第二步在route
目录下的app.php
文件定义路由。假设我们在admin目录下定义了一个MenuController的控制器,里面有一个create方法。此时的路由就应该这么定义。
Route::group("menu", function () {
Route::get("create", "admin.menu/create");
});
上面的admin.menu
是ThinkPHP中的一个分层控制器定义规则。
路由访问
上面定义好了路由,接下来就可以进行访问。按照上面定义的规则,我们可能会直接去这样访问https://域名/menu/create
,最终的结果是404。为什么会这样呢?这是因为你绑定多应用之后,在同一个域名下,没有做域名绑定,需要在域名后面添加一个应用名称
。
- 因此正确的访问方式应该是这样的。
https://域名/admin/menu/create
。 - 除了上面的一种访问方式,还有一种就是不走定义好的路由。
https://域名/admin/admin.menu/create
。