框架发布

框架发布

最新版本发布信息
提问交流

提问交流

使用问题咨询
经验分享

经验分享

开发经验交流分享
功能建议

功能建议

官方开发功能建议
BUG反馈

BUG反馈

使用BUG反馈
模块&插件&数据包

模块&插件&数据包

模块插件数据包分享

海豚框架搭建出来之后如何修改后台模块和前台页面

提问交流momo 回复了问题 • 2 人关注 • 1 个回复 • 334 次浏览 • 2020-07-07 16:10 • 来自相关话题

想做一个查看功能

回复

提问交流孙笑川 发起了问题 • 1 人关注 • 0 个回复 • 310 次浏览 • 2020-07-07 13:06 • 来自相关话题

ZBuilder 构建表单 单选项Radio 设定default属性(默认值)不起效

BUG反馈momo 发表了文章 • 0 个评论 • 204 次浏览 • 2020-07-07 10:17 • 来自相关话题

问题代码:application\common\builder\form\items\radio.html
{eq name="key" value="$form[type].value|default=''"}checked{/eq}应该改为:

{eq name="key" value="$form[type].default|default=''"}checked{/eq}

Bug原因:  把default误写成value 查看全部
问题代码:application\common\builder\form\items\radio.html
{eq name="key" value="$form[type].value|default=''"}checked{/eq}
应该改为:


{eq name="key" value="$form[type].default|default=''"}checked{/eq}


Bug原因:  把default误写成value

表格右侧按钮替换出错及解决办法

回复

BUG反馈benci 发起了问题 • 1 人关注 • 0 个回复 • 309 次浏览 • 2020-06-30 09:46 • 来自相关话题

新增用户权限登录问题

回复

BUG反馈小熊 发起了问题 • 1 人关注 • 0 个回复 • 306 次浏览 • 2020-06-28 20:24 • 来自相关话题

默认管理员密码 数据库加密后的是什么?

回复

提问交流goonie 发起了问题 • 1 人关注 • 0 个回复 • 338 次浏览 • 2020-06-27 18:29 • 来自相关话题

前端开发的时候,无法加载模板文件

回复

提问交流surge 发起了问题 • 1 人关注 • 0 个回复 • 296 次浏览 • 2020-06-27 11:54 • 来自相关话题

前端开发的时候,无法加载模板文件

回复

提问交流surge 回复了问题 • 1 人关注 • 1 个回复 • 271 次浏览 • 2020-06-27 11:53 • 来自相关话题

想下载个插件,应用商店注册不了,获取验证码一直加载不出来

回复

模块&插件lxp 回复了问题 • 1 人关注 • 1 个回复 • 341 次浏览 • 2020-06-25 10:22 • 来自相关话题

return ZBuilder::make('table') 后台调取图片不显示

回复

提问交流jjxiaobaicai 发起了问题 • 1 人关注 • 0 个回复 • 373 次浏览 • 2020-06-15 10:47 • 来自相关话题

固定列怎么固定表头

提问交流dragonlhp 回复了问题 • 2 人关注 • 1 个回复 • 587 次浏览 • 2020-06-05 22:43 • 来自相关话题

请问同一个页面怎么用ajax提交参数,获得参数接SKD 获取数据渲染模板

回复

提问交流wanglong 发起了问题 • 1 人关注 • 0 个回复 • 348 次浏览 • 2020-06-05 14:55 • 来自相关话题

本地文件同步海豚附件方法

经验分享yangweijie 发表了文章 • 0 个评论 • 263 次浏览 • 2020-06-04 16:12 • 来自相关话题

use app\admin\model\Attachment;


public function local_upload($dir = ''){
if($dir){
if(!is_dir($dir)){
$this->error('路径不存在');
}
set_time_limit(0);
ini_set('memory_limit', '3072M');
$reload = url();
if($this->request->isPost()){
$ids = input('ids/a', []);
if($ids){
foreach ($ids as $key => $path) {
$md5 = md5_file($path);
$exist = Attachment::where('md5', $md5)->find();
if($exist){
if(is_file($exist['path'])){
;
}else{
copy($path, $exist['path']);
}
}else{
$target_dir = 'uploads/files/'.date('Ymd');
if(!is_dir($target_dir)){
mkdir($target_dir);
}
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $path);
$target = $target_dir . DIRECTORY_SEPARATOR.md5((string) microtime(true)).'.'.pathinfo($path, PATHINFO_EXTENSION);
copy($path, $target);
$file_name = pathinfo($path, PATHINFO_BASENAME);
$file_info = [
'uid' => session('user_auth.uid'),
'name' => $file_name,
'mime' => $mime,
'path' => str_replace('\\', '/', $target),
'ext' => pathinfo($file_name, PATHINFO_EXTENSION),
'size' => filesize($path),
'md5' => md5_file($path),
'sha1' => sha1_file($path),
'thumb' => '',
'module' => 'admin',
'width' => '',
'height' => '',
];
Attachment::create($file_info);
}
}
$this->success('同步成功');
}else{
$this->error('请至少选择一个文件');
}
}
$current_dir = getcwd();
chdir($dir);
$data_list = [];
$files = glob('*.*');
chdir($current_dir);
if($files){
foreach ($files as $key => $file) {
$file = $dir.DIRECTORY_SEPARATOR.$file;
$type = is_dir(realpath($file))?'dir':'file';
if($type == 'file'){
$md5 = md5_file($file);
$exist = Attachment::where('md5', $md5)->find();
}else{
$md5 = '';
$exist = [];
}
$data_list[] = [
'index' => $key,
'md5' => $md5,
'path' => realpath($file),
'type' => is_dir(realpath($file))?'dir':'file',
'size' => filesize($file),
'status' => $exist? is_file($exist['path'])?'已同步'.$exist['id'] :'待恢复'.$exist['id']: '未同步',
];
}
}
$parent_dir = dirname($dir, 1);
$parent_dir = url('local_upload', ['dir'=>$parent_dir]);
$js = <<<JS
<script>
function browser(index){
\$path = \$.trim(\$('#builder-table table tbody tr').eq(index).find('td:eq(1) div').text());
location.href = '{$reload}'.replace('.html', '?dir='+\$path);
}
</script>
JS;
return ZBuilder::make('table')
->setTableName(true)
->addTopButton('upload', ['title'=>'同步', 'href'=>url('local_upload', ['dir'=>$dir]), 'class'=>'btn btn-default ajax-post'])
->addColumns([
// ['index', 'index', 'hidden'],
['path', 'path'],
['md5', 'md5'],
['size', 'size'],
['status', '状态'],
['right_button', '操作'],
])
->setPrimaryKey('path')
->setPageTips("当前路径为:{$dir}, <a href='{$parent_dir}'>返回上一级</a> <a href='{$reload}'>重新浏览</a>")
->addRightButton('sub_dir', [
'icon' => 'fa fa-fw fa-inbox',
'title' => '浏览子目录',
'href' => 'javascript:browser(__index__)',
])
->setExtraJs($js)
->replaceRightButton(['type'=>'file'], '', ['sub_dir'])
->setRowList($data_list)
->fetch(); // 渲染模板
}else{
return ZBuilder::make('form')
->setPageTips('请填写要同步的本地目录')
->addFormItems([
['text','dir', '待匹配的目录', '绝对路径格式'],
])
->method('get')
->isAjax(false)
->fetch();
}
}上面是attachment 模型里加的获取器
 
然后自己加个节点 使用就好,
  查看全部
use app\admin\model\Attachment;


public function local_upload($dir = ''){
if($dir){
if(!is_dir($dir)){
$this->error('路径不存在');
}
set_time_limit(0);
ini_set('memory_limit', '3072M');
$reload = url();
if($this->request->isPost()){
$ids = input('ids/a', []);
if($ids){
foreach ($ids as $key => $path) {
$md5 = md5_file($path);
$exist = Attachment::where('md5', $md5)->find();
if($exist){
if(is_file($exist['path'])){
;
}else{
copy($path, $exist['path']);
}
}else{
$target_dir = 'uploads/files/'.date('Ymd');
if(!is_dir($target_dir)){
mkdir($target_dir);
}
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $path);
$target = $target_dir . DIRECTORY_SEPARATOR.md5((string) microtime(true)).'.'.pathinfo($path, PATHINFO_EXTENSION);
copy($path, $target);
$file_name = pathinfo($path, PATHINFO_BASENAME);
$file_info = [
'uid' => session('user_auth.uid'),
'name' => $file_name,
'mime' => $mime,
'path' => str_replace('\\', '/', $target),
'ext' => pathinfo($file_name, PATHINFO_EXTENSION),
'size' => filesize($path),
'md5' => md5_file($path),
'sha1' => sha1_file($path),
'thumb' => '',
'module' => 'admin',
'width' => '',
'height' => '',
];
Attachment::create($file_info);
}
}
$this->success('同步成功');
}else{
$this->error('请至少选择一个文件');
}
}
$current_dir = getcwd();
chdir($dir);
$data_list = [];
$files = glob('*.*');
chdir($current_dir);
if($files){
foreach ($files as $key => $file) {
$file = $dir.DIRECTORY_SEPARATOR.$file;
$type = is_dir(realpath($file))?'dir':'file';
if($type == 'file'){
$md5 = md5_file($file);
$exist = Attachment::where('md5', $md5)->find();
}else{
$md5 = '';
$exist = [];
}
$data_list[] = [
'index' => $key,
'md5' => $md5,
'path' => realpath($file),
'type' => is_dir(realpath($file))?'dir':'file',
'size' => filesize($file),
'status' => $exist? is_file($exist['path'])?'已同步'.$exist['id'] :'待恢复'.$exist['id']: '未同步',
];
}
}
$parent_dir = dirname($dir, 1);
$parent_dir = url('local_upload', ['dir'=>$parent_dir]);
$js = <<<JS
<script>
function browser(index){
\$path = \$.trim(\$('#builder-table table tbody tr').eq(index).find('td:eq(1) div').text());
location.href = '{$reload}'.replace('.html', '?dir='+\$path);
}
</script>
JS;
return ZBuilder::make('table')
->setTableName(true)
->addTopButton('upload', ['title'=>'同步', 'href'=>url('local_upload', ['dir'=>$dir]), 'class'=>'btn btn-default ajax-post'])
->addColumns([
// ['index', 'index', 'hidden'],
['path', 'path'],
['md5', 'md5'],
['size', 'size'],
['status', '状态'],
['right_button', '操作'],
])
->setPrimaryKey('path')
->setPageTips("当前路径为:{$dir}, <a href='{$parent_dir}'>返回上一级</a> <a href='{$reload}'>重新浏览</a>")
->addRightButton('sub_dir', [
'icon' => 'fa fa-fw fa-inbox',
'title' => '浏览子目录',
'href' => 'javascript:browser(__index__)',
])
->setExtraJs($js)
->replaceRightButton(['type'=>'file'], '', ['sub_dir'])
->setRowList($data_list)
->fetch(); // 渲染模板
}else{
return ZBuilder::make('form')
->setPageTips('请填写要同步的本地目录')
->addFormItems([
['text','dir', '待匹配的目录', '绝对路径格式'],
])
->method('get')
->isAjax(false)
->fetch();
}
}
上面是attachment 模型里加的获取器
 
然后自己加个节点 使用就好,
 

呼叫系统crm出售

回复

模块&插件zgbuynow 发起了问题 • 1 人关注 • 0 个回复 • 439 次浏览 • 2020-05-27 18:21 • 来自相关话题

百度地图不可用

回复

BUG反馈7739小海 发起了问题 • 1 人关注 • 0 个回复 • 331 次浏览 • 2020-05-26 13:15 • 来自相关话题

上传图片undefined

回复

BUG反馈7739小海 发起了问题 • 1 人关注 • 0 个回复 • 383 次浏览 • 2020-05-26 11:08 • 来自相关话题

where 条件查询 输出sql语句能在数据库查询数据,但是在框架里就查询不出数据

回复

提问交流a673435628 发起了问题 • 1 人关注 • 0 个回复 • 476 次浏览 • 2020-05-25 17:24 • 来自相关话题

setSearch没有默认值

回复

功能建议barry 发起了问题 • 1 人关注 • 0 个回复 • 339 次浏览 • 2020-05-22 11:34 • 来自相关话题

请问数据库取出的列怎么对应到复选框中?

回复

经验分享zzyu220 发起了问题 • 1 人关注 • 0 个回复 • 337 次浏览 • 2020-05-18 11:14 • 来自相关话题

会更新 Thinkphp6 吗?

框架发布小兔言言 回复了问题 • 4 人关注 • 3 个回复 • 1711 次浏览 • 2020-05-14 14:52 • 来自相关话题