国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

tpext-myadmin框架完整說(shuō)明

ichynul

說(shuō)明:

之前發(fā)布了插件:http://m.wtbis.cn/plugin/70

由于插件頁(yè)面不支發(fā)布回復(fù),所以在此另開一個(gè)貼,希望感興趣的朋友下載試用,有問題的可以在此反饋。

其實(shí)里面包含好幾個(gè)東西,插件系統(tǒng)、后臺(tái)權(quán)限、ui生成、配置管理、等,整合為一個(gè)插件發(fā)布出來(lái),說(shuō)是個(gè)插件,其實(shí)更是一個(gè)框架。

因?yàn)樯婕暗蕉鄠€(gè)功能,而且是移植版,經(jīng)過了大量調(diào)整,所以發(fā)布出來(lái)有一些問題,一直在迭代修復(fù)。

以下為正文

簡(jiǎn)介

tpext-myadmin 快速開發(fā)框架,內(nèi)置插件系統(tǒng)、admin權(quán)限,插件系統(tǒng),ui生成(類似laravel-admin)

集成[webman]版?zhèn)}庫(kù):https://github.com/hi-tpext/mywebman

插件倉(cāng)庫(kù):https://github.com/hi-tpext/tpextmyadmin/tree/4.0

QQ群

安裝

[php環(huán)境] 建議7.3、7.4
8.x未測(cè)試

方式一、使用 composer 全新安裝

安裝 [webman] 和 [tpextmyadmin]

#取消composer鏡像,使用官方源,確定下載的是最新

composer config -g --unset repos.packagist

composer create-project workerman/webman mywebman

cd mywebman

composer require ichynul/tpextmyadmin:^4.1.1

安裝完畢,此安裝版是最小模式,只包含基本的后臺(tái)功能,建議開發(fā)新項(xiàng)目時(shí)使用此方式。


方式二、使用 git 安裝演示站

git拉取,依次執(zhí)行以下命令,mywebman 為新項(xiàng)目目錄,可自行調(diào)整

git clone https://github.com/hi-tpext/mywebman.git mywebman

cd mywebman

composer update

相關(guān)演示代碼在https://github.com/hi-tpext/mywebman app/admin/中,數(shù)據(jù)庫(kù)腳本由[myadmindata]擴(kuò)展提供,請(qǐng)下載安裝。

安裝完畢,此安裝版是最和演示站同步的,如果你想自己搭建演示站可用此方式。

注意:此方式的倉(cāng)庫(kù)是不帶composer依賴vendor目錄的,請(qǐng)務(wù)必運(yùn)行composer update安裝所有依賴后再訪問網(wǎng)站。


配置

  • /config/thinkorm.php中配置數(shù)據(jù)庫(kù),或在網(wǎng)頁(yè)中配置[見下一步]

webman1.4.x

新版本默認(rèn)開啟控制器后綴:'controller_suffix' => 'Controller',

請(qǐng)關(guān)閉它,在config/app.php中修改為:

'controller_suffix' => '',

webman1.5.x

2023-02-16 已適配

擴(kuò)展安裝

  1. 瀏覽器輸入 [http://localhost:8787/admin] 打開,如果沒有事先配置數(shù)據(jù)庫(kù),將會(huì)跳轉(zhuǎn)到配置數(shù)據(jù)庫(kù)的頁(yè)面(若不能正常跳,配置數(shù)據(jù)庫(kù)后再試)。

  2. 自動(dòng)安裝基礎(chǔ)擴(kuò)展

  3. 手動(dòng)安裝 [tpext.myadmin],確保此擴(kuò)展優(yōu)先,以支持其他擴(kuò)展的后臺(tái)菜單創(chuàng)建

    默認(rèn)賬號(hào):admintpextadmin

    安裝成功后自動(dòng)創(chuàng)建id為1的超級(jí)管理員,并處于登錄狀態(tài)。

  4. 手動(dòng)安裝其余裝擴(kuò)展

登錄后臺(tái)

  • 安裝完所有擴(kuò)展后,瀏覽器再次輸入[http://localhost:8787/admin]打開,進(jìn)入后臺(tái)主頁(yè)。

一些問題

運(yùn)行目錄

傳統(tǒng)的php-fpm一般是以 public 作為啟動(dòng)目錄,為保持兼容,建議進(jìn)入 public 目錄執(zhí)行啟動(dòng)命令:

[linux]

啟動(dòng):

cd public
php ../start.php start

[windows]

啟動(dòng):

cd public
php ..\windows.php

或修改把 windows.bat 移入 public 目錄并修改內(nèi)容:

CHCP 65001
php ..\windows.php
pause

啟動(dòng):

cd public
.\windows.bat

extend 擴(kuò)展

extend擴(kuò)展基于composer.josn配置

初次安裝會(huì)檢測(cè),如果未注冊(cè)/extend/目錄將自動(dòng)修改composer.json文件(命令行會(huì)提示:注冊(cè)擴(kuò)展目錄:extend/成功,composer.json文件已修改),但修改后仍然需你下次運(yùn)行composer相關(guān)命名才后生效。

"autoload": {
    /**其他**/
    "psr-0": {
         "": "extend/"
     }
}

如果下載extend類型插件不能識(shí)別,提示:

執(zhí)行出錯(cuò):
未匹配到擴(kuò)展

是因?yàn)?extend/目錄未注冊(cè),里面的php文件無(wú)法識(shí)別其命名空間。
暫時(shí)解決辦法,檢查composer.json文件有無(wú)psr-0 extend/,然后運(yùn)行composer u,之后使extend生效,重啟程序。


文檔

https://gxzrnxb27j.k.topthink.com/@tpext-docs/about.html

Thinkphp版:

https://github.com/hi-tpext/myadmin

演示

網(wǎng)址

  1. [tp6.1] http://gaosu.shenzhuo.vip:50469/admin

  2. [webman] http://gaosu.shenzhuo.vip:50468/admin

賬號(hào)

admin

tpextadmin

實(shí)例

<?php

namespace app\admin\controller;

use app\common\logic\MemberLogic;
use app\common\model;
use think\Controller;
use tpext\builder\traits\HasBuilder;

/**
 * Undocumented class
 * @title 會(huì)員管理
 */
class Member extends Controller
{
    use HasBuilder;

    /**
     * Undocumented variable
     *
     * @var model\Member
     */
    protected $dataModel;

    protected function initialize()
    {
        $this->dataModel = new model\Member;
        $this->pageTitle = '會(huì)員管理';
        $this->enableField = 'status';
        $this->pagesize = 8;

        /* 作為下拉選擇數(shù)據(jù)源 相關(guān)設(shè)置 */
        //顯示
        $this->selectTextField = '{id}#{nickname}({mobile})';
        //like查詢字段,$this->dataModel->where('username|nickname|mobile', 'like', $kwd);
        $this->selectSearch = 'username|nickname|mobile';
    }

    protected function filterWhere()
    {
        $searchData = request()->get();
        $where = [];
        if (!empty($searchData['id'])) {
            $where[] = ['id', 'eq', $searchData['id']];
        }
        if (!empty($searchData['username'])) {
            $where[] = ['username', 'like', '%' . $searchData['username'] . '%'];
        }
        if (!empty($searchData['nickname'])) {
            $where[] = ['nickname', 'like', '%' . $searchData['nickname'] . '%'];
        }
        if (!empty($searchData['mobile'])) {
            $where[] = ['mobile', 'like', '%' . $searchData['mobile'] . '%'];
        }
        if (isset($searchData['status']) && $searchData['status'] != '') {
            $where[] = ['status', 'eq', $searchData['status']];
        }
        if (isset($searchData['level']) && $searchData['level'] != '') {
            $where[] = ['level', 'eq', $searchData['level']];
        }
        if (!empty($searchData['province'])) {
            $where[] = ['province', 'eq', $searchData['province']];
            if (!empty($searchData['city'])) {
                $where[] = ['city', 'eq', $searchData['city']];
                if (!empty($searchData['area'])) {
                    $where[] = ['area', 'eq', $searchData['area']];
                }
            }
        }
        return $where;
    }

    /**
     * 構(gòu)建搜索
     *
     * @return void
     */
    protected function builSearch()
    {
        $search = $this->search;

        $search->text('id', '會(huì)員id')->maxlength(20);
        $search->text('username', '賬號(hào)')->maxlength(20);
        $search->text('nickname', '昵稱')->maxlength(20);
        $search->text('mobile', '手機(jī)號(hào)')->maxlength(20);
        $search->select('level', '等級(jí)')->optionsData(model\MemberLevel::order('level')->select(), 'name', 'level')->afterOptions([0 => '普通會(huì)員']);
        $search->select('status', '狀態(tài)')->options([0 => '禁用', 1 => '正常']);
        $search->select('province', '省份')->dataUrl(url('api/areacity/province'), 'ext_name')->withNext(
            $search->select('city', '城市')->dataUrl(url('api/areacity/city'), 'ext_name')->withNext(
                $search->select('area', '地區(qū)')->dataUrl(url('api/areacity/area'), 'ext_name')
            )
        );
    }

    /**
     * 構(gòu)建表格
     *
     * @return void
     */
    protected function buildTable(&$data = [])
    {
        $table = $this->table;

        $table->show('id', 'ID');
        $table->image('avatar', '頭像')->thumbSize(50, 50)->default('/static/images/touxiang.png');
        $table->show('username', '賬號(hào)');
        $table->text('nickname', '昵稱')->autoPost()->getWrapper()->addStyle('width:130px');
        $table->show('mobile', '手機(jī)號(hào)')->getWrapper()->addStyle('width:100px');
        $table->match('gender', '性別')->options([1 => '男', 2 => '女', 0 => '未知'])->getWrapper()->addStyle('width:50px');
        $table->show('age', '性別');
        $table->show('level_name', '等級(jí)');
        $table->show('money', model\MemberAccount::$types['money']);
        $table->show('points', model\MemberAccount::$types['points']);
        $table->show('pca', '省市區(qū)');
        $table->switchBtn('status', '狀態(tài)')->default(1)->autoPost()->getWrapper()->addStyle('width:60px');
        $table->show('last_login_time', '最近登錄')->getWrapper()->addStyle('width:150px');
        $table->show('create_time', '注冊(cè)時(shí)間')->getWrapper()->addStyle('width:150px');

        $table->sortable('id,sort,money,points,commission,re_comm,shares,last_login_time');

        $table->getToolbar()
            ->btnAdd()
            ->btnEnableAndDisable('啟用', '禁用')
            ->btnRefresh();

        $table->getActionbar()
            ->btnEdit()
            ->btnView()
            ->btnLink('account', url('/admin/memberaccount/add', ['member_id' => '__data.pk__']), '', 'btn-success', 'mdi-square-inc-cash');
    }

    /**
     * 構(gòu)建表單
     *
     * @param boolean $isEdit
     * @param array $data
     */
    protected function builForm($isEdit, &$data = [])
    {
        $form = $this->form;

        $form->tab('基本信息');
        $form->image('avatar', '頭像')->thumbSize(50, 50);
        $form->text('username', '賬號(hào)')->required()->maxlength(20);
        $form->text('nickname', '昵稱')->required()->maxlength(20);
        $form->text('mobile', '手機(jī)號(hào)')->maxlength(11);
        $form->text('email', '郵件')->maxlength(60);
        $form->number('age', '年齡')->max(100)->min(1)->default(18);
        $form->radio('gender', '性別')->options([0 => '未知', 1 => '男', 2 => '女'])->default(0);

        $form->tab('其他信息');
        $form->textarea('remark', '備注')->maxlength(255);
        $form->switchBtn('status', '狀態(tài)')->default(1);

        if ($isEdit) {
            $form->show('last_login_time', '最近登錄時(shí)間');
            $form->show('create_time', '注冊(cè)時(shí)間');
            $form->show('update_time', '修改時(shí)間');
        }
    }

    /**
     * 保存數(shù)據(jù)
     *
     * @param integer $id
     * @return void
     */
    private function save($id = 0)
    {
        $data = request()->only([
            'avatar',
            'username',
            'nickname',
            'mobile',
            'email',
            'gender',
            'age',
            'status',
            'remark',
        ], 'post');

        $result = $this->validate($data, [
            'username|賬號(hào)' => 'require',
            'nickname|昵稱' => 'require',
            'mobile|手機(jī)號(hào)' => 'mobile',
            'age|年齡' => 'number',
        ]);

        if (true !== $result) {
            $this->error($result);
        }

        return $this->doSave($data, $id);
    }
}

效果展示








License

Apache2

4043 6 3
6個(gè)評(píng)論

moco

$table->getToolbar()
->btnAdd($url = url('add',['module'=>request()->get('module',1)]), $label = '添加' $class = 'btn-primary', $icon = 'mdi-plus', $attr = ''); add鏈接添加變量數(shù)據(jù)不起作用,永遠(yuǎn)是1

  • 暫無(wú)評(píng)論
fengshengchang

針對(duì)商品展示的前臺(tái)頁(yè)面有嗎?怎么進(jìn)入?

  • ichynul 2022-07-23

    商城沒有pc端,現(xiàn)在一般都是app之類的,用api接口獲取數(shù)據(jù)。

Saas-Maike

作者怎么聯(lián)系 我安裝了 怎么和演示的不一樣

  • ichynul 2022-11-01

    后臺(tái)界面風(fēng)格可以安裝擴(kuò)展改變的

  • Saas-Maike 2022-11-01

    404怎么解決

  • Saas-Maike 2022-11-01

    生產(chǎn)菜單 404

  • ichynul 2022-11-02

    你說(shuō)的是生成代碼吧,菜單是要手動(dòng)添加的。
    是生成代碼這個(gè)功能404,還是生成出來(lái)的頁(yè)面404?
    最好發(fā)個(gè)截圖(在下面新回復(fù),就可以上傳圖片),是哪個(gè)頁(yè)面,或發(fā)一下頁(yè)面url。

  • Saas-Maike 2022-11-02

    有其他的聯(lián)系方式吧

  • Saas-Maike 2022-11-02

    老是很不順利

  • ichynul 2022-11-02

    qq群:171696777
    或掃文章里的二維碼進(jìn)群

owenzhang

哇,不錯(cuò),改天試下,謝謝分享

  • owenzhang 2022-11-01

    但好卷啊,我還是希望,我就寫接口和服務(wù),后臺(tái)頁(yè)面什么的都是前端來(lái)做,前后端分離啊,后端就做后端的事情

  • ichynul 2022-11-01

    順帶把前端的事情做了而已。
    可能比只寫接口麻煩一些,單比前端+后端的工作量減少了。你只是把工作量分個(gè)另外一個(gè)人了,總的工作量并沒減少。
    前端頁(yè)面也不好寫,只不過把html換成了vue之類。另外向其他的通過后端json配置生成的界面,其實(shí)也不比我這個(gè)簡(jiǎn)單。

skyhack

感謝分享,mark下!

  • 暫無(wú)評(píng)論
W

點(diǎn)贊收藏加關(guān)注,大佬666

  • 暫無(wú)評(píng)論
年代過于久遠(yuǎn),無(wú)法發(fā)表評(píng)論

ichynul

1810
積分
0
獲贊數(shù)
0
粉絲數(shù)
2022-03-04 加入
??