curd
curd copied to clipboard
thinkphp6 低代码自动构建CURD页面
可视化CURD代码生成工具.
源码
gitee地址:https://gitee.com/iszsw/curd
github地址:https://github.com/iszsw/curd
文档
安装
# 运行环境要求 PHP8+
composer require iszsw/curd
在线编辑生成页面
curd作为surface的自定义组件,完全遵循surface的开发规范,因此,你可以直接在surface中调用curd组件,无需任何配置,直接使用即可。
$curd = (new \curd\Curd())->props([
'extComponent' => [
[
'label' => "扩展组件",
'components' => [
// 自定义表单组件
[
'component' => [
(new Input(['label' => 'Input1', 'name' => 'Input1'])),
(new Input(['label' => 'Input2', 'name' => 'Input2']))
],
'label' => '批量插入',
'icon' => "组件"
],
],
]
],
]);
echo $curd->view();
根据数据库源生成默认配置
调用
Curd::withDbSource(\PDO $pdo, string $database, string $tableName = '')
方法,指定数据库源,生成默认配置。
下面提供一个ThinkPHP在页面上选择数据库源的示例:
// 从参数中获取表名
$table = $this->request->get('table', '');
$curd = (new \curd\Curd())->props([
'extComponent' => [
[
'label' => "扩展组件",
'components' => [
[
'component' => [
(new Input(['label' => 'Input1', 'name' => 'Input1'])),
(new Input(['label' => 'Input2', 'name' => 'Input2']))
],
'label' => '批量插入',
'icon' => "组件"
],
],
]
],
])
// Tp框架获取Pdo连接:Db::connect()->connect()
->withDbSource(Db::connect()->connect(), '数据库名', $table);
$surface = new Surface();
// 下面代码提供一个下拉选择框浮动到页面上,选中表名之后生成默认配置
$surface->addStyle(
"<style>
.table-list{
position: fixed;
top: 10px;
right: 510px;
z-index: 99;
width: 200px;
}
</style>");
$tableNames = [];
foreach (Db::query("SHOW TABLES") as $info) {
$name = $info['Tables_in_surface'];
$tableNames[$name] = $name;
}
$surface->append((new Select())->props([
'class' => "table-list",
'filterable' => true,
'model-value' => new Vmodel("cur_table_name", $table),
'model-value' => $table,
// 将选中的表名同步到url刷新页面
'onChange' => Functions::create(<<<JS
let url = window.location.href
let paramName = 'table'
let pattern = new RegExp('(' + paramName + '=).*?(&|$)');
if (url.search(pattern)>=0) {
url = url.replace(pattern,'$1' + name + '$2');
} else {
url += (url.indexOf('?')>0 ? '&' : '?') + paramName + '=' + name;
}
window.location.href = url;
JS, ['name'])
])->options($tableNames));
$surface->append($curd);
return $surface->view();