在 ThinkPHP 5.1 项目中创建一个新的模块

文章目录

  • 前言
    • [📦 ThinkPHP 模块结构](#📦 ThinkPHP 模块结构)
    • [🎯 创建新模块的步骤](#🎯 创建新模块的步骤)
    • [📝 更完整的模块示例](#📝 更完整的模块示例)
      • [1. 创建模型 `d:\php\ht\application\test\model\User.php`](#1. 创建模型 d:\php\ht\application\test\model\User.php)
      • [2. 创建控制器 `d:\php\ht\application\test\controller\User.php`](#2. 创建控制器 d:\php\ht\application\test\controller\User.php)
      • [3. 创建视图文件](#3. 创建视图文件)
    • [🔑 访问路径总结](#🔑 访问路径总结)
    • [⚠️ 注意事项](#⚠️ 注意事项)

前言


📦 ThinkPHP 模块结构

首先看看现有项目的结构:

复制代码
d:\php\ht\application\
├── admin/           ← 后台管理模块
│   ├── controller/   ← 控制器(处理请求)
│   ├── model/       ← 模型(操作数据库)
│   └── view/        ← 视图(显示页面)
│   └── config/      ← 模块配置
│
├── api/             ← API接口模块
│   ├── controller/
│   ├── model/
│   └── view/
│
└── chat/            ← 聊天模块

🎯 创建新模块的步骤

假设我们要创建一个 "Test" 测试模块

步骤1:在 application 目录下创建模块文件夹

d:\php\ht\application\ 下创建:

复制代码
test/                    ← 新模块目录
├── controller/          ← 控制器目录
├── model/               ← 模型目录
├── view/                ← 视图目录
│   └── test/            ← 视图子目录(与控制器对应)
│       └── index.html   ← 视图文件
└── config/             ← 模块配置目录

步骤2:创建控制器文件

d:\php\ht\application\test\controller\ 下创建 Index.php

php 复制代码
<?php
namespace app\test\controller;

use think\Controller;

class Index extends Controller
{
    // 首页方法
    public function index()
    {
        return $this->fetch();
    }
    
    // 欢迎方法
    public function hello($name = 'World')
    {
        return 'Hello, ' . $name . '!';
    }
}

步骤3:创建视图文件

d:\php\ht\application\test\view\test\ 下创建 index.html

html 复制代码
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Test 模块</title>
</head>
<body>
    <h1>欢迎来到 Test 模块!</h1>
    <p>这是我的第一个 ThinkPHP 模块</p>
</body>
</html>

步骤4:访问新模块

创建完成后,访问地址:

复制代码
http://flyenv-test-oqbbixhm.test/test          ← 访问 index 方法
http://flyenv-test-oqbbixhm.test/test/index    ← 同上
http://flyenv-test-oqbbixhm.test/test/hello    ← 访问 hello 方法

📝 更完整的模块示例

让我给你演示一个带完整功能的模块(增删改查):

1. 创建模型 d:\php\ht\application\test\model\User.php

php 复制代码
<?php
namespace app\test\model;

use think\Model;

class User extends Model
{
    // 设置表名(可选,默认会解析)
    protected $name = 'user';
    
    // 自动写入时间戳(可选)
    protected $autoWriteTimestamp = true;
}

2. 创建控制器 d:\php\ht\application\test\controller\User.php

php 复制代码
<?php
namespace app\test\controller;

use think\Controller;
use app\test\model\User as UserModel;

class User extends Controller
{
    // 用户列表页面
    public function lists()
    {
        // 查询所有用户
        $users = UserModel::select();
        
        // 分配给视图
        $this->assign('users', $users);
        
        // 渲染视图
        return $this->fetch();
    }
    
    // 添加用户表单页面
    public function add()
    {
        return $this->fetch();
    }
    
    // 处理添加用户
    public function doAdd()
    {
        // 获取POST数据
        $data = input('post.');
        
        // 创建用户
        $user = new UserModel();
        $user->save($data);
        
        // 返回成功
        return '用户添加成功!';
    }
    
    // 编辑用户
    public function edit($id)
    {
        // 查询用户
        $user = UserModel::find($id);
        
        // 分配给视图
        $this->assign('user', $user);
        
        return $this->fetch();
    }
    
    // 删除用户
    public function doDel($id)
    {
        UserModel::destroy($id);
        
        return '删除成功!';
    }
}

3. 创建视图文件

列表页 d:\php\ht\application\test\view\user\lists.html

html 复制代码
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>用户列表</title>
</head>
<body>
    <h1>用户列表</h1>
    
    <a href="/test/user/add">添加用户</a>
    
    <table border="1">
        <tr>
            <th>ID</th>
            <th>用户名</th>
            <th>操作</th>
        </tr>
        <?php foreach($users as $user): ?>
        <tr>
            <td><?php echo $user['id']; ?></td>
            <td><?php echo $user['username']; ?></td>
            <td>
                <a href="/test/user/edit/id/<?php echo $user['id']; ?>">编辑</a>
                <a href="/test/user/doDel/id/<?php echo $user['id']; ?>">删除</a>
            </td>
        </tr>
        <?php endforeach; ?>
    </table>
</body>
</html>

添加页 d:\php\ht\application\test\view\user\add.html

html 复制代码
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>添加用户</title>
</head>
<body>
    <h1>添加用户</h1>
    
    <form method="post" action="/test/user/doAdd">
        用户名:<input type="text" name="username"><br><br>
        密码:<input type="password" name="password"><br><br>
        <button type="submit">提交</button>
    </form>
</body>
</html>

🔑 访问路径总结

php 复制代码
┌────────────────────────────────────────────────────────┐
│  URL 路径              →  控制器        →  方法       │
├────────────────────────────────────────────────────────┤
│  /test                  →  Index      →  index()     │
│  /test/index            →  Index      →  index()     │
│  /test/user/lists       →  User       →  lists()    │
│  /test/user/add         →  User       →  add()      │
│  /test/user/doAdd       →  User       →  doAdd()     │
│  /test/user/edit/id/5   →  User       →  edit(id=5)  │
└────────────────────────────────────────────────────────┘

⚠️ 注意事项

  1. 控制器文件名必须和类名一致,且首字母大写
  2. 视图目录要和控制器名对应(User控制器 → view/user/)
  3. 视图文件要和控制器方法名对应(edit方法 → edit.html)
  4. 如果出现404,检查URL重写是否配置正确

相关推荐
无心使然云中漫步2 小时前
ArcGis常用服务介绍及Arcgis,Openlayers,Leaflet加载
开发语言·arcgis·php
软件开发技术4 小时前
最新在线留言板系统PHP源码
开发语言·php·留言板系统php源码
ZStack开发者社区4 小时前
ZSTACK · 答客问 | 高频问题合集
前端·网络·php
TE-茶叶蛋20 小时前
ThinkPHP入门
php
TE-茶叶蛋21 小时前
结合登录页-PHP基础知识点解析
android·开发语言·php
流觞 无依1 天前
DedeCMS plus/comment.php 评论 XSS/注入(XSS、SQL注入)修复教程
sql·php·xss
cyber_两只龙宝1 天前
【Nginx】Nginx实现FastCGI详解
linux·运维·nginx·云原生·php·memcached·fastcgi
dog2501 天前
卡瓦列里积分赏析
开发语言·php