davidxu / yii2-wang-editor
一个基于Yii2框架的wangEditor编辑器
Requires
- php: >=8.0
- davidxu/yii2-adminlte4: ^1.0.0
Requires (Dev)
- phpunit/phpunit: ^4.0
Suggests
- npm-asset/qiniu-js: ^3.4
README
这是一个所见即所得富文本编辑器wangEditor 5的Yii2扩展。
这是一个所见即所得富文本编辑器wangEditor 5的Yii2扩展。
功能
它支持在同一页面上使用多个wangEditor5实例。
本扩展支持同一个页面多个wangEditor实例。
它还通过使用七牛QETag支持秒传功能。
本扩展通过使用七牛QETag支持秒传功能。
分片上传也已启用。如果自定义的chunkSize
大于系统大小(get_cfg_var('upload_max_filesize')
),则将使用系统最大上传文件大小。
本扩展已设置为使用分片上传。如果设置的chunkSize
大于系统设置值(get_cfg_var('upload_max_filesize')
),将使用系统值。
您可以将文件上传到本地服务器或直接上传到七牛对象存储Kodo。
可以上传文件到本地服务器或者直接上传文件到七牛对象存储 Kodo。
有关更多七牛对象存储Kodo策略,请参阅七牛网站。
要了解七牛对象存储Kodo的更多信息和相关安全策略,请自行参考七牛官方网站。
我们使用自定义功能进行视频/图片的上传和插入。
本扩展采用自定义功能上传和插入视频/图片。
安装
安装此扩展的最佳方式是通过composer。
安装本扩展最便捷的方法是通过Composer安装。
运行
php composer.phar require --prefer-dist davidxu/yii2-wang-editor
或增加
"davidxu/yii2-wang-editor": "*"
到您的composer.json
文件的require部分。
到composer.json
相关区域。
使用方法
如果您想将文件信息存储在数据库中(MySQL/MariaDB),请通过以下方式执行迁移文件:
如果您想保存文件信息到数据库(MySQL/MariaDB),请首先执行以下迁移文件
yii migrate/up @davidxu/base/migrations
然后简单地在您的代码中使用它:
然后先这样使用
本地上传
视图端
<?php use davidxu\weditor\Editor; use yii\helpers\Url; // without ActiveForm echo Editor::widget([ 'model' => $model, 'attribute' => 'image_src', 'name' => 'image_src', // If no model and attribute pointed 'url' => Url::to('@web/upload/local'), 'clientOptions' => [ // 'foo' => 'bar', ], 'secondUpload' => true, // default false 'getHashUrl' => Url::to('@web/upload/get-hash'), // required for secondUpload is true 'uploadBasePath' => 'uploads/', 'storeInDB' => true, // return file id in DB to image url instead of file url if true, migrate model db first. default true. If second upload is true, must be true 'metaData' => ['foo' => 'bar',], 'chunkSize' => '2M', // if more than `get_cfg_var('upload_max_filesize')`, will use system upload max filesize ]); ?> <?php // with ActiveForm echo $form->field($model, 'image_src') ->widget(Dropzone::class, [ 'url' => Url::to('@web/upload/local'), // .... ]);?>
控制器端
use davidxu\base\actions\LocalAction; use davidxu\base\models\Attachment; use yii\web\Controller; class UploadController extends Controller { public function actions(): array { $actions = parent::actions(); return ArrayHelper::merge([ 'local' => [ 'class' => LocalAction::class, 'url' => Yii::getAlias('@web/uploads'), // default: '@web/uploads'. stored file base url, 'fileDir' => Yii::getAlias('@webroot/uploads'), // default: '@webroot/uploads'. file store in this dirctory, 'allowAnony' => true, // default false 'attachmentModel' => Attachment::class, // Or other extended ModelClass ], ], $actions); } }
七牛上传
视图端
<?php use davidxu\weditor\Editor; use davidxu\base\enums\QiniuUploadRegionEnum; use davidxu\base\enums\UploadTypeEnum; use yii\helpers\Url; echo Editor::widget([ 'model' => $model, 'attribute' => 'image_src', 'name' => 'image_src', // If no model and attribute pointed 'url' => QiniuUploadRegionEnum::getValue(QiniuUploadRegionEnum::EC_ZHEJIANG_2), 'drive' => UploadTypeEnum::DRIVE_QINIU, 'clientOptions' => [ // 'foo' => 'bar', ], // ...... (refer to local config in view) ]); ?> <?php // with ActiveForm echo $form->field($model, 'image_src') ->widget(Dropzone::class, [ 'url' => QiniuUploadRegionEnum::getValue(QiniuUploadRegionEnum::EC_ZHEJIANG_2), 'drive' => UploadTypeEnum::DRIVE_QINIU, 'qiniuBucket' => Yii::$app->params['qiniu.bucket'], 'qiniuAccessKey' => Yii::$app->params['qiniu.bucket'], 'qiniuSecretKey' => Yii::$app->params['qiniu.bucket'], 'qiniuCallbackUrl' => Yii::$app->params['qiniu.bucket'], // default 'qiniuCallbackBody' here, you can modify them. // 'qiniuCallbackBody' => [ // 'drive' => UploadTypeEnum::DRIVE_QINIU, // 'specific_type' => '$(mimeType)', // 'file_type' => '$(x:file_type)', // 'path' => '$(key)', // 'hash' => '$(etag)', // 'size' => '$(fsize)', // 'name' => '$(fname)', // 'extension' => '$(ext)', // 'member_id' => '$(x:member_id)', // 'width' => '$(imageInfo.width)', // 'height' => '$(imageInfo.height)', // 'duration' => '$(avinfo.format.duration)', // 'store_in_db' => '$(x:store_in_db)', // 'upload_ip' => '$(x:upload_ip)', // ]; // ...... (refer to local config in view) ]);?>
控制器端
use davidxu\base\actions\QiniuAction; use davidxu\base\models\Attachment; use yii\web\Controller; use yii\web\BadRequestHttpException; class UploadController extends Controller { /** * @throws BadRequestHttpException */ public function beforeAction($action): bool { $currentAction = $action->id; $novalidateActions = ['qiniu']; if(in_array($currentAction, $novalidateActions)) { // disable CSRF validation $action->controller->enableCsrfValidation = false; } parent::beforeAction($action); return true; } public function actions(): array { $actions = parent::actions(); return ArrayHelper::merge([ 'qiniu' => [ 'class' => QiniuAction::class, 'url' => Yii::getAlias('@web/uploads'), // default: '@web/uploads'. stored file base url, 'allowAnony' => true, // default false 'attachmentModel' => Attachment::class, ], ], $actions); } }
如果启用秒传功能,
如果启用秒传功能,
视图端
<?= Editor::widget([ 'secondUpload' => true, 'getHashUrl' => Url::to('@web/upload/get-hash'), // required for secondUpload is true // ...... (other config in view) ]); ?>
控制器端
use davidxu\base\actions\GetHashAction; use davidxu\base\models\Attachment; use yii\web\Controller; use yii\helpers\ArrayHelper; class UploadController extends Controller { public function actions(): array { $actions = parent::actions(); return ArrayHelper::merge([ 'get-hash' => [ 'class' => GetHashAction::class, 'attachmentModel' => Attachment::class, ], ], $actions); } }
享受乐趣!