При создании представлений, бывает необходимо делать поля ввода с возможностью форматирования текста. Вот и у меня возникла такая потребность в текстовом редакторе. После недолгих поисков готовых текстовых редакторов в интернете, я решил остановить свое внимание на редакторе CKEditor.
Он имеет все основные функции редактирования текста и есть три режима, которые содержат разные наборы кнопок редактирования.
- Итак, для начала нам потребуется скачать с официального сайта сам редактор CKEditor. Кладем папку на одном уровне с папками css и images.
- Затем скачиваем расширение для Yii the-ckeditor-integration. Кладем эту папку в /protected/extesions/.
- Далее в представлении можно вызвать данный редактор следующим образом:
$this->widget('application.extensions.TheCKEditor.TheCKEditorWidget',array( //Модель с которой будет связан виджет 'model'=>$profile->profile //Атрибут поля 'attribute'=>'description', 'height'=>'200px', 'width'=>'100%', //набор кнопок редактора (Basic,Standart или Full) 'toolbarSet'=>"Basic", //Путь к файлу ckeditor.php 'ckeditor'=>Yii::app()->basePath.'/../ckeditor/ckeditor.php', //Путь к редактору 'ckBasePath'=>Yii::app()->baseUrl.'/ckeditor/', ) );
Все, теперь виджет должен выводиться. У тех, кто скачал CKEditor 4 версии, расширение будет выдавать ошибку
include(CKEditor.php) [function.include]: failed to open stream: No such file or directory
Потому что файла CKEditor.php в новой версии редактора не существует.
Решение данной проблемы предлагаю не очень красивое но рабочее. Для того чтобы Yii заработал с CKeditor 4 нужно скачать CKeditor 3 и в него скопировать файлы CKeditor 4 с заменой.
В таком случае у нас появится файл CKEditor.php которого не хватало, но набор кнопок все время один. Т.е. все время работает режим full. Что же делать в таком случае? Все дело в параметре
'toolbarSet'=>"Basic",
Подсмотрев код на странице ckeditor.com/latest/samples/plugins/toolbar/toolbar.html можно указать массив с необходимыми нам кнопками в этом параметре. Например:
'toolbarSet'=>array( array( 'Source', '-', 'Bold', 'Italic', 'Underline', 'Strike' ), array( 'TextColor', 'BGColor' ), ),
Этот пример выведет следующие кнопки в редакторе.
Каждый новый массив будет в новом блоке кнопок. Знак «-» означает вертикальную разделительную черту в блоке.
Некоторые названия кнопок:
Source — источник,
Bold, Italic, Underline, Strike — жирный, курсив, подчеркивание, зачеркивание
TextColor, BGColor — цвет текста, цвет фона
Cut, Copy, Paste, PasteText, PasteFromWord ,Undo, Redo — вырезать, вырезать, копировать, вставить, вставить только текст, вставить из ворда, назад, вперед
P.S. Вот еще один текстовый редактор, который я нашел после ссылка
comments powered by HyperComments