Yii2: Визуальный редактор Imperavi Redactor

Yii2: Визуальный редактор Imperavi Redactor Одна из самых необходимых вещей при создании сайта на Yii (Yii 2) это добавить на текстовое поле визуальный редактор. Для себя нашёл очень удобным редакотр Imperavi Redactor, на новых проектах ставлю его вместо ckeditor или Tinymce.

Мне приглянулся виджет от vova07 - https://github.com/vova07/yii2-imperavi-widget. Хорошо описан, удобен на формах. Устанавливается легко через composer. Пришлось повозиться с ошибкой неизвестного класс Widget. Локально composer быстро установил виджет. Но на хостинге нет composer, а просто залить файлы, в которые вносил изменения, оказалось недостаточным. Были видно какие-то добавления в папку vendors/composer, или ещё куда. Проблема решилась перезагрузкой всей папки vendors на хостинг.

Также похожие расширения:

  • https://github.com/asofter/yii2-imperavi-redactor
  • https://packagist.org/packages/zyx/yii2-imperavi-redactor

В контроллере добавил в actions()

public function actions()
{
   return [
       'error' => [
           'class' => 'yii\web\ErrorAction',
       ],
'image-upload' => [
           'class' => 'vova07\imperavi\actions\UploadAction',
           'url' => '/images/blog/', // Directory URL address, where files are stored.
           'path' => '@webroot/images/blog/' // Or absolute path to directory where files are stored.
       ],
'images-get' => [
           'class' => 'vova07\imperavi\actions\GetAction',
           'url' => '/images/blog/', // Directory URL address, where files are stored.
           'path' => '@webroot/images/blog/', // Or absolute path to directory where files are stored.
           'type' => '0',
       ],
'files-get' => [
           'class' => 'vova07\imperavi\actions\GetAction',
           'url' => '/files/blog/', // Directory URL address, where files are stored.
           'path' => '@webroot/files/blog/', // Or absolute path to directory where files are stored.
           'type' => '1',//GetAction::TYPE_FILES,
       ],
'file-upload' => [
           'class' => 'vova07\imperavi\actions\UploadAction',
           'url' => '/files/blog/', // Directory URL address, where files are stored.
           'path' => '@webroot/files/blog/' // Or absolute path to directory where files are stored.
       ],
   ];
}
И в представлении формы
 
use vova07\imperavi\Widget;
<?= $form->field($model, 'text')->widget(Widget::classname(), [
   'settings' => [
       'lang' => 'ru',
       'minHeight' => 300,
       'pastePlainText' => true,
'buttonSource' => true,
       'plugins' => [
           'clips',
           'fullscreen'
       ],
'imageUpload' => Url::to(['/blog/image-upload']),
'imageManagerJson' => Url::to(['/blog/images-get']),
'fileManagerJson' => Url::to(['/blog/files-get']),
'fileUpload' => Url::to(['/blog/file-upload'])
   ]
]);?>
 
Загрузка изображений работает.
При попытке загрузки файлов ошибка ajax:
{"error":"The file \"Doc_999e15b6b1a143f48e142872fdfd3b6b.pdf\" is not an image."} 
 
Где-то проверка на формат загружаемого файла....
 
Источник: loco.ru

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Вы можете почитать все статьи от almix'а.



Другие статьи по этой теме:

Комментарии (6)     Подпишитесь на RSS комментариев к этой статье.

6 комментариев

#1289
a.k. говорит:
November 30, 2014 at 04:28 pm

Так же поставил и настроил imperavi на YII2, но с картинками какая-то проблема...При попытке использовать уже загруженные картинки (image manager) показывает вместо файлов пустоту, причем количество пустых картинок равно количеству реальных файлов. Что-то с путями?

#1290
almix говорит:
December 2, 2014 at 12:30 pm
У меня нет возможности использовать загруженные картинки, может что-то не включил. У вас код, как у меня?
#1389
bstrd говорит:
July 6, 2015 at 11:59 am

У меня загруженные ранее картинки работают, делал так:

В контроллере:

use vova07\imperavi\actions\UploadAction;
use vova07\imperavi\actions\GetAction;

public function actions()
{
return [
'image-upload' => [
'class' => UploadAction::className(),
'url' => '/upload/',
'path' => '@webroot/upload/',
],
'images-get' => [
'class' => GetAction::className(),
'url' => '/upload/',
'path' => '@webroot/upload/',
'type' => GetAction::TYPE_IMAGES,
],
];
}

В представлении:

<?= $form->field($model, 'text')->widget(Widget::classname(), [
'settings' => [
'lang' => 'ru',
'minHeight' => 300,
'pastePlainText' => true,
'buttonSource' => true,
'plugins' => [
'clips',
'fullscreen',
'imagemanager',
],
'imageUpload' => Url::to( [ '/blog/image-upload' ] ),
'imageManagerJson' => Url::to( [ '/blog/images-get' ] ),
]
]);?>

#1402
BatMenT говорит:
July 28, 2015 at 11:21 am

Привет. Может быть кому нибудь поможет (из тех кто будет искать позже).

Решением проблемы "{"error":"The file \"Doc_999e15b6b1a143f48e142872fdfd3b6b.pdf\" is not an image."} "

является использование "дополнительных параметров" в "actions" а именно: 

'uploadOnlyImage' => false,             //чтобы можно было загружать файлы

'validatorOptions' => ['maxSize' => 40000],    //макс. размер файла
#1518
Сергей говорит:
February 19, 2016 at 12:27 am

"...просто залить файлы, в которые вносил изменения, оказалось недостаточным. Были видно какие-то добавления в папку vendors/composer, или ещё куда. Проблема решилась перезагрузкой всей папки vendors на хостинг."

Посмотрите файл /vendor/composer/autoload_psr4.php

#1521
almix говорит:
March 1, 2016 at 11:12 am
Сергей, спасибо. Да, при своей работе composer прописывает в autoload массив для пути к расширениям. Описал тут - http://yiico.ru/blog/496-yii2-recaptcha-widget