Comments (9)
Editor.php
`<?php
/**
- FormBuilder表单生成器
- Author: xaboy
- Github: https://github.com/xaboy/form-builder
- Editor: 黄连木笛
*/
namespace FormBuilder\components;
use FormBuilder\FormComponentDriver;
use FormBuilder\Helper;
/**
-
Editor组件
-
Class Editor
-
@Package FormBuilder\components
-
@method $this bind(String $name , Array $param) 绑定事件
/
class Editor extends FormComponentDriver
{
/*- @var string
*/
protected $name = 'vue-editor';
/**
- 绑定的事件
- @var array
**/
protected $on = [];
/**
- @var array
*/
protected $props = [
'useCustomImageHandler' => false
];
/**
- @var array
*/
protected static $propsRule = [
'placeholder' => 'string',
'useCustomImageHandler' => 'boolean'
];
protected function init()
{
$this->placeholder($this->getPlaceHolder());
}protected function getPlaceHolder($pre = '请输入')
{
return parent::getPlaceHolder($pre);
}public function getValidateHandler()
{
return Validate::str(Validate::TRIGGER_BLUR);
}/**
- 自定义事件
- @var array
-
@param [0] string 绑定事件的名称
-
@parma [1] func 绑定事件调用的方法
**/
protected $bindEvents = [
'image-added' => ['image-added' , 'imageAdded'],
'image-removed' => ['image-removed' , 'imageRemoved']
];/**
- 绑定事件
- @param $name string 自定义事件名称
- @param $param array 参数
- @return Object
**/
public function bind($name , $param = []){
$action = $this->bindEvents[$name] ?? false;
if(!$action) return $this;
$func_name = $action[1];
$this->$func_name($name , $param , $action);
return $this;
}
/**
-
富文本图片上传事件
-
@param $name string 自定义事件名称
-
@param $param array 参数
-
@param $action array 事件名称
**/
protected function imageAdded($name , $param = [] , $action){
if(!$param['url']) return;//事件内容 string
$this->on[$name] = "
function(file,Editor,cursorLocation,resetUploader){
var formData = new FormData();
formData.append('file',file);
$.ajax({
url: '{$param['url']}',
type: 'post',
data: formData,
dataType: 'JSON',
processData: false,
contentType: false,
success: function(res){
Editor.insertEmbed(cursorLocation , 'image' , res.data.url);
resetUploader()
}
});
}
";
}
/**
- 绑定富文本图片删除事件
- @param $name string 自定义事件名称
- @param $param array 参数
- @param $action array 事件名称
**/
protected function imageRemoved($name , $param = [] , $action){
//事件内容 string
$this->on[$name] = "
function(file,Editor,cursorLocation,resetUploader){
console.log('图片删除了');
}
";
}
/**
- 生成表单规则
- @return array
*/
public function build()
{
return [
'type' => $this->name,
'field' => $this->field,
'title' => $this->title,
'on' => $this->on,
'value' => $this->value,
'props' => (object)$this->props,
'validate' => $this->validate,
'col' => $this->col
];
}
}`
- @var string
from form-builder.
前端getRules后把字符串的函数转成函数
if(c.on){ //事件 for(let i in c.on){ eval('c.on[i] = ' + c.on[i]); } }
from form-builder.
需要自己通过 form-create 实现
from form-builder.
我这边尝试的加了form-create里面的富文本,然后图片上传的话需要绑定事件所以就自己弄了下绑定事件
from form-builder.
我觉得form-builder 有必要更新一下使用最新的form-create 并把富文本和绑定事件给补充一下
from form-builder.
富文本带入
`<script src="https://unpkg.com/quill/dist/quill.min.js"></script>
PHP使用
Form Class
use FormEditorTrait;
FormEditorTrait.php
setProps(['useCustomImageHandler' => true]) ->bind('image-added' , ['url'=> url('upload')]) ->bind('image-removed')`from form-builder.
以上就是我解决 富文本和绑定事件的代码
from form-builder.
可以内置一下绑定事件功能
from form-builder.
我引入富文本编辑器的方法简单暴力
1、页面直接页面引入百度编辑器的js插件
2、php端:
$span = new FormBuilder\Driver\CustomComponent('div');
$span->title('编辑器');
$span->props(['id' => 'myEditor']);
页面
var editor = UE.getEditor('myEditor',{
serverUrl: ''
});
editor.ready(function () {
editor.setContent(后台传的内容);
});
from form-builder.
Related Issues (20)
- 项目很好,但不知道如何扩展 HOT 1
- 不同选项切换不同的内容 HOT 1
- select下拉选中后依旧提示未选中 HOT 1
- 有个需求,服务区域需要多选,不能用城市联动,请问有什么方法可以实现,谢谢 HOT 1
- select 单选值不是字符串的时候,选着会提示未选择 HOT 1
- 代码注释问题
- 控制其他组件显示问题 HOT 1
- 这个frame框架组件如何使用呢?
- trait EmitRule 这个特性类中的 emitPrefix 方法写错了吧?
- 官方文档居然不介绍组件默认值怎么设置? HOT 1
- 开启服务报错 HOT 2
- select组件如何定义remoteMethods HOT 1
- 两个问题
- 怎么修改提交按钮的样式
- 复选框怎么实现呢? HOT 1
- doctrine/annotations
- 多级联动组件Elm::cascader不支持多选
- 有没有vue3版本的呀
- 没有项目
- php8.2报错 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from form-builder.