GTAdmin

一个基于GTPHP框架开发的后台管理应用,帮助开发者快速地创建Web应用。干净简洁、优雅高效,让人怦然心动!

首页 HTML CSS JavaScript PHP SQL

GTAdmin

一个基于GTPHP框架开发的后台管理应用,GTPHP框架帮助开发者快速地创建Web应用。干净简洁、优雅高效,让人怦然心动!

使用说明

解压文件包,放到网站运行目录下即可;适用环境:Apache 2.4及以上;PHP 7.4或更新版本;开启 URL Rewriting

.htaccess(Apache):

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [QSA,L]

.htaccess(Nginx):

rewrite ^/(.*)/$ /$1 redirect;
if (!-e $request_filename){
    rewrite ^(.*)$ /index.php break;
}

目录结构

目录:

root/
├── index.php   # 入口文件
├── .htaccess   # .htaccess文件
├── Sys   # 系统目录
│   ├── Config   # 配置文件目录
│   │   └── config.php   # 配置文件
│   └── Src   # 系统类库目录
│── Static   # 静态资源目录
│   ├── images   # 图片目录
│   ├── scripts   # js目录
│   └── styles   # css目录
└── admin   # Admin目录
    ├── index.php   # 入口文件
    ├── .htaccess   # .htaccess文件
    ├── App   # 应用目录
    │   │── Controllers   # 控制器目录
    └── └── Views   # 视图目录

配置 index.php

使用以下方法添加路由 $router->addRoute('GET|POST', 'pattern', function() { … }); 当路由与当前URL($_SERVER['REQUEST_URI'])匹配时,将执行附加的路由处理函数。路由处理函数必须是可调用的。处理一条匹配路由。当没有找到匹配的路由时,将输出404。

路由模式

路由模式可以是静态路由或正则路由: 静态路由不包含动态参数的最简单的路由,直接与当前URL的路径部分进行比较,必须完全匹配。 正则路由包含可以随请求而变化的动态部分,使用与Perl兼容的正则表达式(PCRE)进行定义

静态路由

// 系统目录
define('SYS_PATH', __DIR__ . '/');
define('APP_PATH', 'App/');
define('VIEWS_PATH', 'Views/');
define('MODELS_PATH', 'Models/');
define('MODELS_NP', '\App\Models'); //Model Namespace
define('STATIC_PATH', '/App/Static/');
// 配置
require SYS_PATH . APP_PATH . 'Sys/Config/config.php';
require SYS_PATH . APP_PATH . 'Sys/Src/Router.php';
require SYS_PATH . APP_PATH . 'Sys/Src/PDODb.php';
//数据库
define('DB_HOST', 'localhost');
define('DB_NAME', 'db');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_CHARSET', 'utf8mb4');
define('DB_PORT', 3306);

use \GoodText\App\Appdump;
use \GoodText\App\Application;
use \GoodText\App\Authorization;
use \GoodText\App\Router;

$router = new Router();
$router->setNamespace('\App\Controllers');


$router->smatch('GET', '/', 'user@index');
$router->smatch('GET|POST', '/admin/list', 'user@list');

$router->dispatch();

控制器(Controller)

控制器 App\Controllers\MyuserController.php

namespace App\Controllers;
use \GoodText\App\Application;
use \GoodText\App\PDODb;

class My_userController extends Application {

    public function My_indexAction()
    {
        $Model = Application::model('users');
        $user_data = $Model->user();
        Application::view(APP_PATH.VIEWS_PATH.'index', $user_data);
    }

    public function My_hiAction()
    {
        $view_data = array('username' => 'admin');
        Application::view(APP_PATH.VIEWS_PATH.'hi', $view_data);
    }

    public function My_homeAction()
    {
        Application::view(APP_PATH.VIEWS_PATH.'home');
    }

}

模型(Model)

模型 App\Models\usersModel.php

namespace App\Models;
use \GoodText\App\PDODb;

class users {
    public function user()
    {
            $username = 'admin';
            $app = new PDODb();
            $pdo = $app->dbInterface();
            //查询
            $sql = 'SELECT * FROM gt_auth_users WHERE user_status = 1';
            $stmt = $pdo->prepare($sql);
            //$stmt->bindParam(':user_name', $username, $pdo::PARAM_STR, 20);
            $stmt->execute();
            if($stmt && $stmt->rowCount()){
                $stmt->setFetchMode($pdo::FETCH_ASSOC);//设置结果关联读取方
                $row = $stmt->fetch();//获取记录
                return $row;

            } else {
                return false;
            }
    }
}

视图(View)

视图 App\Views\indexView.php

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title> 测试 </title>
    </head>
    <body>
        <pre><?php print_r($view_data); ?><pre>
    </body>
</html>

GTRouter GTAdmin GTDatagrid

 

© 2024 GoodText