内容模型功能完成
This commit is contained in:
@@ -10,8 +10,11 @@
|
||||
namespace app\model;
|
||||
|
||||
/**
|
||||
* 分类模型
|
||||
* 扩展模型
|
||||
*/
|
||||
class Addons extends \think\Model {
|
||||
|
||||
public static function refreshAddons(){
|
||||
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,9 @@
|
||||
namespace app\model;
|
||||
|
||||
use think\facade\Config;
|
||||
use think\facade\Db;
|
||||
use sent\tree\Tree;
|
||||
use app\model\Model as Models;
|
||||
|
||||
/**
|
||||
* 设置模型
|
||||
@@ -19,46 +22,49 @@ class Attribute extends \think\Model {
|
||||
'id' => 'integer',
|
||||
);
|
||||
|
||||
protected static function onAfterInsert($model){
|
||||
// if ($data['model_id']) {
|
||||
// $name = db('Model')->where('id', $data['model_id'])->value('name');
|
||||
// $db = new \com\Datatable();
|
||||
// $attr = $data->toArray();
|
||||
// $model_attr = array(
|
||||
// 'model_id' => $data['model_id'],
|
||||
// 'attr_id' => $data->id,
|
||||
// 'group_id' => 0,
|
||||
// 'is_add_table' => 1,
|
||||
// 'is_show' => $data['is_show'],
|
||||
// 'is_must' => $data['is_must'],
|
||||
// 'sort' => 0,
|
||||
// );
|
||||
// $attr['after'] = db('Attribute')->where('name', '<>', $data['name'])->where('model_id', $data['model_id'])->order('id desc')->value('name');
|
||||
// return $db->columField(strtolower($name), $attr)->query();
|
||||
// }
|
||||
}
|
||||
|
||||
protected static function onAfterUpdate($model){
|
||||
// $attr = $data->toArray();
|
||||
// $attr['action'] = 'CHANGE';
|
||||
// $attr['oldname'] = db('Attribute')->where('id', $attr['id'])->value('name');
|
||||
// if ($attr['id']) {
|
||||
// $name = db('Model')->where('id', $attr['model_id'])->value('name');
|
||||
// $db = new \com\Datatable();
|
||||
// return $db->columField(strtolower($name), $attr)->query();
|
||||
// } else {
|
||||
// return false;
|
||||
// }
|
||||
}
|
||||
|
||||
protected static function onAfterDelete($model){
|
||||
$tablename = strtolower($tablename);
|
||||
//删除模型表中字段
|
||||
$db = new \com\Datatable();
|
||||
if (!$db->CheckField($tablename, $info['name'])) {
|
||||
return true;
|
||||
protected static function onAfterInsert($data){
|
||||
$data = $data->toArray();
|
||||
if ($data['model_id']) {
|
||||
$db = new \com\Datatable();
|
||||
$name = Models::where('id', $data['model_id'])->value('name');
|
||||
$data['after'] = self::where('name', '<>', $data['name'])->where('model_id', $data['model_id'])->order('id desc')->value('name');
|
||||
return $db->columField(strtolower($name), $data)->query();
|
||||
}
|
||||
}
|
||||
|
||||
protected static function onAfterUpdate($data){
|
||||
$data = $data->toArray();
|
||||
if ($data['model_id']) {
|
||||
$tablename = Models::where('id', $data['model_id'])->value('name');
|
||||
|
||||
//删除模型表中字段
|
||||
$db = new \com\Datatable();
|
||||
if ($db->CheckField($tablename, $data['name'])) {
|
||||
$data['action'] = 'CHANGE';
|
||||
}
|
||||
$result = $db->columField(strtolower($tablename), $data)->query();
|
||||
return $result;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
protected static function onAfterDelete($data){
|
||||
$data = $data->toArray();
|
||||
if ($data['model_id']) {
|
||||
$tablename = Models::where('id', $data['model_id'])->value('name');
|
||||
|
||||
//删除模型表中字段
|
||||
$db = new \com\Datatable();
|
||||
if (!$db->CheckField($tablename, $data['name'])) {
|
||||
$result = true;
|
||||
}else{
|
||||
$result = $db->delField($tablename, $data['name'])->query();
|
||||
}
|
||||
return $result;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
$result = $db->delField($tablename, $info['name'])->query();
|
||||
}
|
||||
|
||||
protected function getTypeTextAttr($value, $data) {
|
||||
@@ -71,14 +77,44 @@ class Attribute extends \think\Model {
|
||||
}
|
||||
|
||||
protected function getOptionAttr($value, $data){
|
||||
$list = [];
|
||||
if ($data == '') {
|
||||
return [];
|
||||
return $list;
|
||||
}
|
||||
if (in_array($data['type'], ['checkbox', 'radio', 'select', 'bool'])) {
|
||||
# code...
|
||||
if (in_array($data['type'], ['checkbox', 'radio', 'select'])) {
|
||||
$row = explode(PHP_EOL, $data['extra']);
|
||||
foreach ($row as $k => $val) {
|
||||
if (strrpos($val, ":")) {
|
||||
list($key, $label) = explode(":", $val);
|
||||
$list[] = ['key' => $key, 'label' => $label];
|
||||
}else{
|
||||
$list[] = ['key' => $k, 'label' => $val];
|
||||
}
|
||||
}
|
||||
}elseif($data['type'] == 'bool'){
|
||||
$list = [['key'=>0,'label'=>'禁用'],['key'=>1,'label'=>'启用']];
|
||||
}elseif($data['type'] == 'bind'){
|
||||
|
||||
if (strrpos($data['extra'], ":")) {
|
||||
$extra = explode(":", $data['extra']);
|
||||
$row = Db::name($extra[0])->select()->toArray();
|
||||
if ($extra[1] == 'tree') {
|
||||
$row = (new Tree())->toFormatTree($row);
|
||||
foreach ($row as $val) {
|
||||
$list[] = ['key'=>$val['id'], 'label'=>$val['title_show']];
|
||||
}
|
||||
}else{
|
||||
foreach ($row as $val) {
|
||||
$list[] = ['key'=>$val['id'], 'label'=>$val['title']];
|
||||
}
|
||||
}
|
||||
}else{
|
||||
$row = Db::name($data['extra'])->select()->toArray();
|
||||
foreach ($row as $val) {
|
||||
$list[] = ['key'=>$val['id'], 'label'=>$val['title']];
|
||||
}
|
||||
}
|
||||
}
|
||||
return $list;
|
||||
}
|
||||
|
||||
public static function getField($model, $ac = "add"){
|
||||
@@ -93,7 +129,7 @@ class Attribute extends \think\Model {
|
||||
$map[] = ['is_show', 'IN', [1, 3]];
|
||||
}
|
||||
|
||||
$row = self::where('model_id', $model['id'])
|
||||
$row = self::where($map)
|
||||
->select()
|
||||
->append(['option'])
|
||||
->toArray();
|
||||
@@ -107,4 +143,33 @@ class Attribute extends \think\Model {
|
||||
|
||||
return $list;
|
||||
}
|
||||
|
||||
public static function getfieldList(){
|
||||
return [
|
||||
'基础' => [
|
||||
['name' => 'id', 'title' => 'id', 'help' => '', 'type' => 'hidden'],
|
||||
['name' => 'model_id', 'title' => 'model_id', 'help' => '', 'type' => 'hidden'],
|
||||
['name' => 'name', 'title' => '字段名', 'help' => '英文字母开头,长度不超过30', 'type' => 'text'],
|
||||
['name' => 'title', 'title' => '字段标题', 'help' => '请输入字段标题,用于表单显示', 'type' => 'text'],
|
||||
['name' => 'type', 'title' => '字段类型', 'help' => '用于表单中的展示方式', 'type' => 'select', 'option' => Config::get('config.config_type_list'), 'help' => ''],
|
||||
['name' => 'length', 'title' => '字段长度', 'help' => '字段的长度值', 'type' => 'text'],
|
||||
['name' => 'extra', 'title' => '参数', 'help' => '布尔、枚举、多选字段类型的定义数据', 'type' => 'textarea'],
|
||||
['name' => 'value', 'title' => '默认值', 'help' => '字段的默认值', 'type' => 'text'],
|
||||
['name' => 'remark', 'title' => '字段备注', 'help' => '用于表单中的提示', 'type' => 'text'],
|
||||
['name' => 'is_show', 'title' => '是否显示', 'help' => '是否显示在表单中', 'type' => 'select', 'option' => [
|
||||
['key'=>'1', 'label' => '始终显示'], ['key'=>'2', 'label' => '新增显示'], ['key'=>'3', 'label' => '编辑显示'], ['key'=>'0', 'label' => '不显示']
|
||||
], 'value' => 1],
|
||||
['name' => 'is_must', 'title' => '是否必填', 'help' => '用于自动验证', 'type' => 'select', 'option' => [['key'=>'0', 'label' => '否'], ['key'=>'1', 'label' => '是']]],
|
||||
],
|
||||
'高级' => [
|
||||
['name' => 'validate_type', 'title' => '验证方式', 'type' => 'select', 'option' => [], 'help' => ''],
|
||||
['name' => 'validate_rule', 'title' => '验证规则', 'help' => '根据验证方式定义相关验证规则', 'type' => 'text'],
|
||||
['name' => 'error_info', 'title' => '出错提示', 'type' => 'text', 'help' => ''],
|
||||
['name' => 'validate_time', 'title' => '验证时间', 'help' => '英文字母开头,长度不超过30', 'type' => 'select', 'option' => [], 'help' => ''],
|
||||
['name' => 'auto_type', 'title' => '自动完成方式', 'help' => '英文字母开头,长度不超过30', 'type' => 'select', 'option' => [], 'help' => ''],
|
||||
['name' => 'auto_rule', 'title' => '自动完成规则', 'help' => '根据完成方式订阅相关规则', 'type' => 'text'],
|
||||
['name' => 'auto_time', 'title' => '自动完成时间', 'help' => '英文字母开头,长度不超过30', 'type' => 'select', 'option' => []],
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -14,4 +14,10 @@ namespace app\model;
|
||||
*/
|
||||
class Hooks extends \think\Model {
|
||||
|
||||
public static $keylist = [
|
||||
['name' => 'name', 'title' => '钩子名称', 'type' => 'text', 'help' => '需要在程序中先添加钩子,否则无效'],
|
||||
['name' => 'description', 'title' => '钩子描述', 'type' => 'text', 'help' => '钩子的描述信息'],
|
||||
['name' => 'type_text', 'title' => '钩子类型', 'type' => 'select', 'option' => '', 'help' => '钩子的描述信息'],
|
||||
['name' => 'addons', 'title' => '插件排序', 'type' => 'kanban'],
|
||||
];
|
||||
}
|
||||
@@ -20,7 +20,7 @@ class Link extends \think\Model {
|
||||
public static $keyList = [
|
||||
['name' => 'id', 'title' => 'ID', 'type' => 'hidden'],
|
||||
['name' => 'title', 'title' => '友链标题', 'type' => 'text', 'help' => ''],
|
||||
['name' => 'url', 'title' => 'URL链接', 'type' => 'text', 'help' => ''],
|
||||
['name' => 'url', 'title' => 'URL链接', 'type' => 'text', 'help' => '连接格式如:https://www.tensent.cn'],
|
||||
['name' => 'ftype', 'title' => '友链类别', 'type' => 'select', 'option' => [
|
||||
['key'=>'1', 'label' => '常用链接'],
|
||||
['key'=>'2', 'label' => '网站导读'],
|
||||
|
||||
@@ -20,9 +20,23 @@ class Model extends \think\Model{
|
||||
'id' => 'integer'
|
||||
);
|
||||
|
||||
protected static function onAfterInsert($model){
|
||||
$data = $model->getDate();
|
||||
protected static function onBeforeInsert($data){
|
||||
if ($data['name'] && $data['title']) {
|
||||
$db = new \com\Datatable();
|
||||
//检查表是否存在并创建
|
||||
if (!$db->CheckTable($data['name'])) {
|
||||
//创建新表
|
||||
return $db->initTable($data['name'], $data['title'], 'id')->query();
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
protected static function onAfterInsert($data){
|
||||
$data = $data->toArray();
|
||||
$fields = [
|
||||
'title'=> ['name' => 'title', 'title' => '标题', 'type' => 'text', 'length' => 200, 'extra' => '', 'remark' => '标题', 'is_show' => 1, 'is_must' => 1, 'value'=>''],
|
||||
'category_id' => ['name' => 'category_id', 'title' => '栏目', 'type' => 'bind', 'length' => 10, 'extra' => 'category', 'remark' => '栏目', 'is_show' => 1, 'is_must' => 1, 'value'=>'0'],
|
||||
@@ -36,6 +50,7 @@ class Model extends \think\Model{
|
||||
'update_time' => ['name' => 'update_time', 'title' => '更新时间', 'type' => 'datetime', 'length' => 11, 'extra' => '', 'remark' => '更新时间', 'is_show' => 0, 'is_must' => 1, 'value'=>'0'],
|
||||
'create_time' => ['name' => 'create_time', 'title' => '添加时间', 'type' => 'datetime', 'length' => 11, 'extra' => '', 'remark' => '添加时间', 'is_show' => 0, 'is_must' => 1, 'value'=>'0'],
|
||||
];
|
||||
$result = false;
|
||||
if (!empty($fields)) {
|
||||
foreach ($fields as $key => $value) {
|
||||
if ($data['is_doc']) {
|
||||
@@ -48,13 +63,12 @@ class Model extends \think\Model{
|
||||
}
|
||||
}
|
||||
}
|
||||
(new Attribute())->saveAll($fields);
|
||||
$result = (new Attribute())->saveAll($fields);
|
||||
}
|
||||
return true;
|
||||
return $result;
|
||||
}
|
||||
|
||||
protected static function onAfterUpdate($model){
|
||||
$data = $model->getDate();
|
||||
protected static function onAfterUpdate($data){
|
||||
if (isset($data['attribute_sort']) && $data['attribute_sort']) {
|
||||
$attribute_sort = json_decode($data['attribute_sort'], true);
|
||||
|
||||
@@ -73,6 +87,16 @@ class Model extends \think\Model{
|
||||
return true;
|
||||
}
|
||||
|
||||
protected static function onAfterDelete($data){
|
||||
$data = $data->toArray();
|
||||
(new Attribute())->where('model_id', $data['id'])->delete();
|
||||
$db = new \com\Datatable();
|
||||
if ($db->CheckTable($data['name'])) {
|
||||
$result = $db->delTable($data['name'])->query();
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
protected function setAttributeSortAttr($value) {
|
||||
return $value ? json_encode($value) : '';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user