You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.5 KiB
59 lines
1.5 KiB
<?php
|
|
namespace common\widgets\ueditor;
|
|
|
|
use Yii;
|
|
use yii\web\View;
|
|
use yii\helpers\Html;
|
|
use yii\helpers\Url;
|
|
use yii\helpers\Json;
|
|
use yii\helpers\ArrayHelper;
|
|
use yii\widgets\InputWidget;
|
|
|
|
use common\widgets\ueditor\assets\UeditorAsset;
|
|
|
|
|
|
class Ueditor extends InputWidget
|
|
{
|
|
/**
|
|
* 编辑器传参配置(配置查看百度编辑器(ueditor)官方文档)
|
|
*/
|
|
public $options = [];
|
|
|
|
/**
|
|
* 编辑器默认基础配置
|
|
*/
|
|
public $_init;
|
|
|
|
public function init()
|
|
{
|
|
$this->id = $this->hasModel() ? Html::getInputId($this->model, $this->attribute) : $this->id;
|
|
|
|
$this->_init = [
|
|
'serverUrl' => Url::to(['ueditor']),
|
|
'lang' => (strtolower(\Yii::$app->language) == 'en-us') ? 'en' : 'zh-cn',
|
|
];
|
|
$this->options = ArrayHelper::merge($this->_init, $this->options);
|
|
//parent::init();
|
|
}
|
|
|
|
public function run()
|
|
{
|
|
$this->registerClientScript();
|
|
if ($this->hasModel()) {
|
|
return Html::activeTextarea($this->model, $this->attribute, ['id' => $this->id]);
|
|
} else {
|
|
return Html::textarea($this->id, $this->value, ['id' => $this->id]);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 注册Js
|
|
*/
|
|
protected function registerClientScript()
|
|
{
|
|
UEditorAsset::register($this->view);
|
|
$options = Json::encode($this->options);
|
|
$script = "UE.getEditor('" . $this->id . "', " . $options . ")";
|
|
$this->view->registerJs($script, View::POS_READY);
|
|
}
|
|
}
|