命令行工具

ThinkPHP命令行

快速生成模块

自动生成相应的模块,自动生成的模块目录包含了config、controller、model和view目录以及common.php公共文件

php think build --module test

快速生成控制器类

执行下面的指令可以生成 index模块的 Blog控制器类库文件

php think make:controller index/Blog

快速生成模型类

执行下面的指令可以生成 index 模块的 Blog 模型类库文件

php think make:model index/Blog

快速生成类库映射文件

可以使用下面的指令生成类库映射文件,提高系统自动加载的性能

php think optimize:autoload

清除缓存文件

如果需要清除应用的缓存文件,可以使用下面的命令

php think clear

不带任何参数调用 clear 命令的话,会清除 runtime 目录(包括模板缓存、日志文件及其子目录)下面的所 有的文件,但会保留目录

如果需要清除某个指定目录下面的文件,可以使用

php think clear --path d:\www\tp5\runtime\log\

生成配置缓存文件

可以为应用或者模块生成配置缓存文件

php think optimize:config

默认生成应用的配置缓存文件,调用后会在 runtime 目录下面生成 init.php 文件,生成配置缓存文件后,应用目录下面的 config.php common.php 以及 tags.php 不会被加载,被 runtime/init.php 取代

如果需要生成某个模块的配置缓存,可以使用

php think optimize:config --module index

调用后会在 runtime/index 目录下面生成 init.php 文件,生成后 index 模块目录下面的 config.php common.php 以及 tags.php 不会被加载,被 runtime/index/init.php 取代

创建自定义命令

1.首先在配置文件:application/command.php

return [  
    'app\home\command\Test'  
];

配置自定义的命令行的namespace。

2.创建自定义的命令行

我在home模块中的command创建一个Test.php的文件,这里要特别注意,因为是命令行跑,要特别注意文件名的大小写,我一开始的时候没有注意到这个,文件名用了小写,结果一直跑不出来命令

namespace app\home\command;  

use think\console\Command;  
use think\console\Input;  
use think\console\Output;  

class Test extends Command  
{  
    protected function configure()  
    {  
        $this->setName('test')->setDescription('Command Test');  
    }  

    protected function execute(Input $input, Output $output)  
    {  
        $output->writeln("TestCommand:");  
    }  
}

讲解一下,这个文件是集成Think底层的Command类的,configure函数是在命令行中用list命令列出所有任务的时候回显示的出的提示,execute函数是说要执行的命令,在这里可以直接调用其他函数,完成例如统计等任务工作,然后用output输出到命令行。

最后,在根目录中有一个think.php的文件,这个是命令行的入口,文件名可以随意改。代码如下

// 定义项目路径  
define('APP_PATH', './application/');  

// 加载框架引导文件  
require './thinkphp/console.php';

然后输入 php think test, 这样就会显示出结果了。

FastAdmin命令行

一键生成CRUD

在FastAdmin中可以快速的一键生成CRUD,其中包括控制器、模型、视图、验证器、语言包、JS

准备工作

在数据库中创建一个fa_test数据表,编辑好表字段结构,并且一定写上字段注释和表注释

FastAdmin在生成CRUD时会根据字段属性、字段注释、表注释自动生成语言包、组件和排版

请确保php所在的目录已经加入到系统环境变量,否则会提示找不到该命令

打开命令行控制台进入到FastAdmin根目录,也就是think文件所在的目录

常用命令

# 生成fa_test表的CRUD
php think crud -t test

# 生成fa_test表的CRUD且一键生成菜单
php think crud -t test -u 1

# 删除fa_test表生成的CRUD
php think crud -t test -d 1

# 生成fa_test表的CRUD且控制器生成在二级目录下
php think crud -t test -c mydir/test

# 生成fa_test_log表的CRUD且生成对应的控制器为testlog
php think crud -t test_log -c testlog

# 生成fa_test表的CRUD且对应的模型名为testmodel
php think crud -t test -m testmodel

# 生成fa_test表的CRUD且生成关联模型category,外链为category_id,关联表主键为id
php think crud -t test -r category -k category_id -p id

# 生成fa_test表的CRUD且所有以list或data结尾的字段都生成复选框
php think crud -t test --setcheckboxsuffix=list --setcheckboxsuffix=data

# 生成fa_test表的CRUD且所有以image和img结尾的字段都生成图片上传组件
php think crud -t test --imagefield=image --imagefield=img

# 关联多个表,参数传递时请按顺序依次传递,支持以下几个参数relation/relationmodel/relationforeignkey/relationprimarykey/relationfields/relationmode
php think crud -t test --relation=category --relation=admin --relationforeignkey=category_id --relationforeignkey=admin_id

//生成v_phealth_db2数据库下的fa_test表的CRUD
php think crud -t test --db=v_phealth_db2

参数介绍

-t, --table=TABLE                              表名,带不带表前缀均可

-c, --controller[=CONTROLLER]                  生成的控制器名,可选,默认根据表名进行自动解析

-m, --model[=MODEL]                            生成的模型名,可选,默认根据表名进行自动解析

-i, --fields[=FIELDS]                          生成的数据列表中可见的字段,默认是全部

-f, --force[=FORCE]                            是否覆盖模式,如果目标位置已经有对应的控制器或模型会提示

-l, --local[=LOCAL]                            是否本地模型,默认1,置为0时,模型将生成在common模块下

-r, --relation[=RELATION]                      关联模型表名,带不带表前缀均可

-e, --relationmodel[=RELATIONMODEL]            生成的关联模型名,可选,默认根据表名进行自动解析

-k, --relationforeignkey[=RELATIONFOREIGNKEY]  表外键,可选,默认会识别为使用 模型_id 名称

-p, --relationprimarykey[=RELATIONPRIMARYKEY]  关联模型表主键,可选,默认会自动识别

-s, --relationfields[=RELATIONFIELDS]          关联模型表显示的字段,默认是全部

-o, --relationmode[=RELATIONMODE]              关联模型,hasone或belongsto [default: "belongsto"]

-d, --delete[=DELETE]                          删除模式,将删除之前使用CRUD命令生成的相关文件

-u, --menu[=MENU]                              菜单模式,生成CRUD后将继续一键生成菜单

--db[=key]                                     多数据库支持(参数为tp5中配置的数据库key 在application\config.php添加数据库配置信息)

--setcheckboxsuffix[=SETCHECKBOXSUFFIX]    自动生成复选框的字段后缀

--enumradiosuffix[=ENUMRADIOSUFFIX]        自动生成单选框的字段后缀

--imagefield[=IMAGEFIELD]                  自动生成图片上传组件的字段后缀

--filefield[=FILEFIELD]                    自动生成文件上传组件的字段后缀

--intdatesuffix[=INTDATESUFFIX]            自动生成日期组件的字段后缀

--switchsuffix[=SWITCHSUFFIX]              自动生成可选组件的字段后缀

--citysuffix[=CITYSUFFIX]                  自动生成城市选择组件的字段后缀

--selectpagesuffix[=SELECTPAGESUFFIX]      自动生成Selectpage组件的字段后缀

--ignorefields[=IGNOREFIELDS]                 排除的字段

--editorclass[=EDITORCLASS]                自动生成富文本组件的字段后缀

--headingfilterfield[=HEADINGFILTERFIELD]  自动生成筛选过滤选项卡的字段,默认是status字段

--sortfield[=SORTFIELD]                    排序字段

常见问题

如果你的表带有下划级会自动生成带层级的控制器和视图,如果你不希望生成带层级的控制器和视图,请使用-c 参数,
例如:php think crud -t test_log -c testlog将会生成testlog这个控制器,
同理如果你的普通表想生成带层级的控制器则可以使用php think crud -t test -c mydir/test

FastAdmin自带一个fa_test表用于测试CRUD能支持的字段名称和类型,请直接使用php think crud -t test生成查看

生成CRUD后,关联表外键在列表未显示对应的关联表数据信息,此时建议你使用在线命令行插件进行可视化生成

生成CRUD后,在添加或编辑时外键字段未能正确显示关联表数据列表,请查看数据库章节常见问题中的说明

如果需要生成回收站,请务必保证你的表中存在deletetime字段,且默认值为null,
这样在一键CRUD时将自动生成回收站的功能,如果deletetime默认值为0,数据将默认进入回收站

不可以对fa_user/fa_auth_rule/fa_auth_group/fa_auth_group_access/fa_admin/fa_admin_log/
fa_admin/fa_user_group/fa_user_rule等框架核心表进行CRUD,否则原有的框架后台功能将无法正常使用

默认的category_id字段,会将表名做为筛选条件,如对fa_test表做CRUD,则类型为test,
如对fa_test_copy做CRUD,则类型为test_copy,
务必前往常规管理->系统配置->字典配置->分类类型中添加上对应的类型,
然后再到分类管理录入数据后才会生效,否则在Selectpage下拉时会为空。

更多CRUD一键生成可使用的参数请使用php think crud --help查看

一键生成菜单

FastAdmin可通过命令控制台快速的一键生成后台的权限节点菜单规则,同时后台的管理菜单也会同步改变,操作非常简单

准备工作

首先确保已经将FastAdmin配置好,数据库连接正确,同时确保已经通过上一步的一键生成CRUD已经生成了test的CRUD

请确保php所在的目录已经加入到系统环境变量,否则会提示找不到该命令

打开控制台进入到FastAdmin根目录,也就是think文件所在的目录

常用命令

# 一键生成test控制器的权限菜单
php think menu -c test

# 一键生成mydir/test控制器的权限菜单
php think menu -c mydir/test

# 删除test控制器生成的菜单
php think menu -c test -d 1

# 一键全部重新所有控制器的权限菜单
php think menu -c all-controller

常见问题

在使用php think menu前确保你的控制器已经添加或通过php think crud生成好

如果之前已经生成了菜单,需要再次生成,请登录后台手动删除之前生成的菜单或使用
php think menu -c 控制器名 -d 1来删除

如果生成层级目录的菜单,在后台展示时父级菜单会以目录名称显示,如果需要修改可以在
application/admin/lang/zh-cn.php中追加相应的语言包即可
powered by GitbookEdit Time: 2024-06-06 18:25:40