代码拉取完成,页面将自动刷新
composer install
安装 vendorphp think run
后访问 http://127.0.0.1:8000 (或使用nginx/apache等web服务器启动均可,然后访问对应的地址) 会自动判断数据库,然后点击初始化.php
结尾的文件以thinkphp的模板解析.sc.php
结尾的文件以本框架定义的类定义及解析.sc.php
文件示例<?php
\Sc\Util\HtmlStructure\Html\Html::create('demo1');
return "hello world!";
<?php
\Sc\Util\HtmlStructure\Html\Html::create('demo2');
return \Sc\Util\HtmlElement\El::double('div')->append('hello world!');
<?php
use App\Admin\Controller\Base\RouteController;
use App\Common\Enums\Base\RouteEnumType;
use App\Common\Util\TP;
use Sc\Util\HtmlStructure\Html\Html;
use Sc\Util\HtmlStructure\Html\Js\JsCode;
use Sc\Util\HtmlStructure\Table;
Html::create('页面名称');
$table = Table::create(TP::route()->to([RouteController::class, 'listsData'])->url(), 'route');
$table->addColumns(
Table\Column::selection(),
Table\Column::normal('标题', 'title'),
);
$component = include __DIR__ . '/edit.sc.php';
$table->setRowEvent('@primary.Edit.编辑',
Table\EventHandler::window('编辑路由')->setConfig(['width' => '500px'])->setContent($component)
);
$table->setHeaderEvent("@danger.delete.删除",
Table\EventHandler::post(
url: TP::route()->to([RouteController::class, 'destroy']),
data: ['ids' => '@selection.map(v => v.id)'],
successHandler: JsCode::create("this.\$message.success('删除成功')")->then("this.routeGetData()")
)->confirmMessage('确认删除选中数据吗?')
->addLoading()
);
return $table->render();
// 数据地址格式
Sc\Util\HtmlStructure\Table::create('http://127.0.0.1/admin/index/index', 'table_id');
// 直接给数据
Sc\Util\HtmlStructure\Table::create([
['id' => 1, 'title' => 'data1'],
['id' => 2, 'title' => 'data2'],
], 'table_id1');
方法名 | 描述 |
---|---|
addColumns | 添加展示列,Column
|
setRowEvent | 设置行事件 |
setRowGroupEvent | 设置一组行事件(下拉菜单形式) |
setHeaderEvent | 设置头部事件(左) |
setPagination | 设置是否开启分页,默认开启 |
setHeaderRightEvent | 设置头部事件(右) |
setAttr | 设置属性 |
setId | 设置ID,同创建时的第二个参数 |
addStatusToggleButtons | 添加状态切换搜索的按钮组 |
setMaxHeight | 设置表格最大高度 |
setDraw | 设置行可拖动 |
enableTrash | 启用回收站 |
render | 渲染表格 |
Table\Column::selection();
Table\Column::normal('标题', 'title');
类型 | 描述 |
---|---|
index | 序号列 |
normal | 常规列 |
selection | 多选框列 |
expand | 可展开列,限ElementUI |
event | 事件列 |
方法名 | 描述 |
---|---|
setAttr | 设置元素属性 |
enableSort | 开启排序 |
fixed | 设置固定位置 |
addSearch | 添加到搜索项 |
setFormat | 设置自定义展示模板,设置展示类型的时候,后面的会顶掉前面的设置 |
showSwitch | 设置行展示开关 |
showTag | 设置展示标签 |
showImage | 设置展示图片 |
notShow | 设置不显示,php层面 |
align | 设置对齐 |
setHeaderEvent
setRowEvent
setRowGroupEvent
use App\Admin\Controller\Base\RouteController;
use App\Common\Enums\Base\RouteEnumType;
use App\Common\Util\TP;
use Sc\Util\HtmlStructure\Html\Html;
use Sc\Util\HtmlStructure\Html\Js\JsCode;
use Sc\Util\HtmlStructure\Table;
// 行事件
// 第一个元素为事件dom元素,可使用 '@primary.Edit.编辑' 格式
// 第一个元素为事件dom元素,可使用 ['@primary.Edit.编辑', ['v-if' => 'a == 1']] 同时设置dom属性格式
// 第一个元素为事件dom元素,可使用 El::double('el-button')->append('事件dom') 自定义格式
// 第二个元素为处理事件的js代码,或返回js代码的回调函数
$table->setRowEvent('@primary.Edit.编辑',
// ===== 类型 ====
// window 打开窗口
// redirect 跳转页面
// get、post 发起异步请求
// layer layer弹窗
// injectSearchRedirectDownload 加页面搜索条件跳转
// 行事件需要带行参数的时候,如果是跳转页面,如下,@id 则是该行的id参数
Table\EventHandler::window('编辑')->setConfig(['width' => '1000px'])->setUrl('url', ['id' => '@id']);
// 行事件需要带行参数的时候,如果是异步请求或表单,如下,@row.id 则是该行的id参数
Table\EventHandler::post('url', ['id' => '@row.id']);
Table\EventHandler::window('请假')->setRowData([
'activity_id' => "@row.id"
])->setContent(
Form::create('ask')->addFormItems(
FormItem::hidden('activity_id'),
FormItem::textarea('content', '内容'),
FormItem::submit()->successClose('current')->submitUrl('url')
)->render()
);
// 头部公共事件需要获取选择的数据时,@selection 则是已选择的数据,实际变量为 selection ,@是标记这是一个js变量不是字符串
// 也可以用 Gramar::mark("selection") 标记
Table\EventHandler::post(
url: TP::route()->to([ActivityController::class, 'destroy']),
data: ['ids' => '@selection.map(v => v.id)'],
successHandler: JsCode::create("this.\$message.success('删除成功')")->then("this.activityGetData()")
)->confirmMessage('确认删除选中数据吗?')
->addLoading()
);
// 设置一组行事件
$table->setRowGroupEvent('@primary.一组', function() {
// 在回调内设置的事件为组事件,在对应的下拉菜单打开
$table->setRowEvent('@primary.Edit.编辑',
Table\EventHandler::window('编辑路由')->setConfig(['width' => '500px'])->setContent($component)
);
});
<?php
use App\Admin\Controller\Base\RoleController;
use App\Common\Util\TP;
use Sc\Util\HtmlStructure\Form;
use Sc\Util\HtmlStructure\Form\FormItem;
use Sc\Util\HtmlStructure\Html\Html;
Html::create('添加管理员角色');
$form = Form::create('roleFormupdate')->config('label-width', '80px');
$form->addFormItems(
FormItem::hidden('id', 'ID'),
FormItem::text('name', '角色'),
FormItem::textarea('describe', '描述'),
FormItem::submit()->successClose('current')->submitUrl(
TP::route()->to([RoleController::class, 'store'])->url(),
TP::route()->to([RoleController::class, 'update'])->url(),
)->success('VueApp.roleGetData()')
);
return $form->render();
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。