Подключаем CKEditor
Рубрика: Мелкие заметки на тему Yii
19 Окт. 2009
Многие интересуются вопросами по интеграции всевозможных визуальных редакторов на свой сайт. Сегодня мы поговорим о том, как интегрировать CKEditor на сайт, разработанный на Yii фреймворке...
[+update 19/10/2009]
Хотя данный редактор в интернете появился совсем недавно, он по праву заслужил много положительных отзывов со стороны пользователей. Посмотреть как визуально он выглядит, вы можете по этой ссылке
Мой взгляд сегодня порадовало дополнение ckeditor, позволяющее легко интегрировать редактор на сайт. Автор этого расширения Ekstazi.
Установка по пунктам:
- Заходим на страницу дополнения во вкладку «Download» и загружаем к себе
- Распаковываем в папку protected/extensions
- Открываем файл отображения где желаем подключить редактор и добавляем в него следующий код:
<?php $this->widget('application.extensions.my.ckeditor.CKEditor', array(
'model'=>$model,
'attribute'=>'text',
'language'=>'ru',
'editorTemplate'=>'full',
)); ?>
[19/10/2009] Была выпущена новая версия с багфиксами. В ближайшие пару дней она появится в разделе дополнения, кому не терпится обновиться сейчас — качаем тут.
Вот и все! Пользуемся :)
Если хотите опубликовать этот материал у себя - пожалуйста, разместите ссылку на страницу откуда вы его взяли.
- На самом деле Yii является отличным инструментом для создания приложения на PHP. Первое с чем сталкивается разработчик на Yii ... "Kohana хелперы в Yii"
- Я надеюсь на эту статью обратят внимание люди которые занимаються обучением по моим урокам «Создаем блог вместе». Сегодня я обнаружил ... "Создаем блог вместе : bugfix #1"
- Эта статья устарела т.к. была написана для yii версии 1.0.х; Если вы используете более новую версию - у вас могут ... "Урок 4 : Создаем отдельную страницу для постов (тем)"

[guest] Ekstazi
Было сказано: Воскресенье, 18 Октябрь 2009
Приятно видеть, что меня пиарят. :) Только расширение надо обновить. Я нашел и исправил пару ошибок в нем. Завтра попрошу sam dark а помочь.

[adm] zolter
Было сказано: Воскресенье, 18 Октябрь 2009
Пожалуйста :) Как обновите - дайте плиз знать, отпишу тут.

[adm] zolter
Было сказано: Понедельник, 19 Октябрь 2009
Качаем обновленную версию по ссылке в теме. Спасибо Ekstazi за оперативность! :)

[guest] Гость
Было сказано: Воскресенье, 01 Ноябрь 2009
Товаришщи !
почему у меня не видно панели ?
текстареа открывается, и все.
путь к файлу прописал. ошибок не выдает (((

[adm] zolter
Было сказано: Воскресенье, 01 Ноябрь 2009
А ты вместо "ns.my.ckeditor.CKEditor" правильный путь прописал?

virus3d
Было сказано: Понедельник, 02 Ноябрь 2009
разобрался с утра.
все пути верные. а ругалось на отсутсвие файла config.js,
поэтому и не грузило. в архиве файла небыло. скачал архив с CKEditor'ом, выдрал оттудова и вставил куда надо. Заработало !

[adm] zolter
Было сказано: Понедельник, 02 Ноябрь 2009
Могу посоветовать еще вот это дополнение yiiframework.com/extension/nh-ckeditor/ оно недавно появилось

[guest] RSol
Было сказано: Вторник, 10 Ноябрь 2009
Для автора этого расширения:
1. Спасибо.
2. Я предлагаю его несколько доработать:
В функции run() сделать, к примеру, так:
$jsname=str_replace(array('[',']'),array('_',''),$name);
$js =<<<EOP
var $jsname = CKEDITOR.replace('{$name}',{$options});
EOP;

[guest] Гость
Было сказано: Пятница, 25 Декабрь 2009
помогите разобраться с
'model'=>$model,
'attribute'=>'text',
какие именно значения нужно указывать?
У меня постоянно ругается что model переменная не определена, а что именно подставлять не совсем понятно...

[adm] zolter
Было сказано: Пятница, 25 Декабрь 2009
У вас есть к примеру модель Demo, а в ней поле textdemo.
Так вот, в ваше отображение (views) надо передать экземпляр модеди $demo, а в поле 'attribute' указать название поля с которым работаем, т.е. 'textdemo'.
Обычно в отображение передают переменную $form, попробуйте model на form заменить

[guest] Гость
Было сказано: Пятница, 25 Декабрь 2009
сделал следующее...
1. создал модель Demo (содержащее атрибут textdemo)
2. сделал экземпляр класса модели Demo, зарендерил его в отоброжение
3. вставил нужный виджет и подставил необходимые данные(model, attribute)
При запеске ругается на переменную language: "Undefined variable: language"
разумеется с этой переменной я ничего не делал, все стоит подефолту
помогите пожалуйста
p.s. если нужно то код контролера, вьювера и модели могу отписать тут...

[adm] zolter
Было сказано: Пятница, 25 Декабрь 2009
Кинь те коды модель+контроллер+отображение на zolter.od@gmail.com

[guest] Гость
Было сказано: Воскресенье, 07 Февраль 2010
у меня такая же проблема "Undefined variable: language"
можно узнать как она была решена?

[guest] zolter
Было сказано: Понедельник, 08 Февраль 2010
Попробуйте удалить 'language'=>'ru', с парраметров виджета.
Скорее всего в вашей версии ru уже стоит по умолчанию

[guest] Vic
Было сказано: Четверг, 20 Май 2010
Про Undefined variable: language" - там надо заменить в конце метода setLanguage $language на $value (наверное, осталось от предыдущего кода)

[guest] Гость
Было сказано: Пятница, 21 Май 2010
Чтобы было понятно, где:
// if(isset($this->allowedLanguages[$language]))
// $this->language=$language;
if(isset($this->allowedLanguages[$value]))
$this->language=$value;
}

[guest] Vic
Было сказано: Пятница, 21 Май 2010
Даже не так, а вот так:
if(isset($this->allowedLanguages[$lang]))
$this->language=$lang;

[guest] Hfvbkm
Было сказано: Суббота, 12 Июнь 2010
Уважаемый автор, а не подскажете, как подключить такой редактор http://habrahabr.ru/blogs/webdev/94800/#comment_2889662 ?

[guest] zolter
Было сказано: Воскресенье, 13 Июнь 2010
Добрый день,
да, интересный редактор. попробую поковырять и рассказать.

[guest] Рамиль
Было сказано: Воскресенье, 13 Июнь 2010
Вот здесь http://yiiframework.ru/forum/viewtopic.php?f=9&t=1072 сделали расширение, но не пойму как его подключить, у меня возникает ошибка (там в комментариях в конце).

[guest] Гость
Было сказано: Четверг, 12 Август 2010
Вот такая х. вылезает, подскажите, что такое? Fatal error: Call to private method CKEditor::init() from context 'CBaseController' in G:\MySites\yii\framework\web\CBaseController.php on line 148

[guest] Гость
Было сказано: Четверг, 02 Декабрь 2010
Fatal error: Call to private method CKEditor::init() from context 'CBaseController' in C:\vhosts\mb\html\framework\web\CBaseController.php on line 140
чтото я не очень понимаю из-за чего это. ставил все по инструкции, скрипт вставил во вьюшку create. Версия yii 1.1.5 версия CKEditor 3.4.2, released on 4 November 2010.
опыта мало, помогите, пожалуйста

[guest] Гость
Было сказано: Пятница, 03 Декабрь 2010
У меня тоже, че-то не работает, отображается только кусок страницы с формой без стилей и пр., на месте где должен быть CKEditor, тоже ничего нет, подскажите, раньше ставил, на yii1.1.2, щас стоит 1.1.5 может синтаксис какой поменяли?

[guest] паша
Было сказано: Среда, 23 Февраль 2011
Если еще кто-то мучается, я написал в форумах сообщества пару способов, как заставить работать свежие версии (на момент написания это Yii 1.1.6 и CKEditor 3.5.2) вместе.
[url=http://yiiframework.ru/forum/viewtopic.php?f=8&t=42]вот тут[/url]

[guest] Гость
Было сказано: Понедельник, 11 Апрель 2011
У меня ошибка
Fatal error: Cannot redeclare class CKEditor in Z:\home\blog.loc\www\protected\extensions\ckeditor\CKEditor.php on line 314
Ну никак работать не хочет, что делать? Все делаю по инструкции целый день страдаю, помогите!

[guest] Гость
Было сказано: Понедельник, 11 Апрель 2011
Скажите, пожалуйста, что делать?
Fatal error: Cannot redeclare class CKEditor in Z:\home\blog.loc\www\protected\extensions\ckeditor\CKEditor.php on line 314
Целый день бьюсь, все делаю по инструкции, помогите пожалуйста!

[guest] Гость
Было сказано: Среда, 13 Апрель 2011
CKEditor.php
72: private $skin='kama';
=> public $skin='kama';
90: if(isset($this->allowedLanguages[$language]))
=> if(isset($this->allowedLanguages[$this->language]))

[guest] Гость
Было сказано: Суббота, 30 Июль 2011
а как собственно сохранить данные введенные в поле редактора?(((

[guest] Гость
Было сказано: Понедельник, 01 Август 2011
помогите( как же потом сохранить, обновить данные, введенные в редактор?

[guest] Levik
Было сказано: Вторник, 02 Август 2011
Видимо, нажать кнопочку Save... отправить на сервер, а на сервере - сохранить в контроллере...

[guest] Гость
Было сказано: Четверг, 27 Октябрь 2011
>> Гость
Было сказано: Четверг, 02 Декабрь 2010
Fatal error: Call to private method CKEditor::init() from context 'CBaseController' in C:\vhosts\mb\html\framework\web\CBaseController.php on line 140
чтото я не очень понимаю из-за чего это. ставил все по инструкции, скрипт вставил во вьюшку create. Версия yii 1.1.5 версия CKEditor 3.4.2, released on 4 November 2010.
опыта мало, помогите, пожалуйста
Таже беда. Осваиваю Yii недавно и столкнулся с этой проблемой. Подскажите в какую сторону копать.

[guest] peso
Было сказано: Среда, 02 Ноябрь 2011
не работает ajax-валидация при потере фокуса полем с CKEditor'ом? Как это можно исправить?

[guest] zolter
Было сказано: Среда, 02 Ноябрь 2011
В смысле не работает? именно валидация самого поля едитора или в целом вся? Должно нормально работать, максимум что так это оно не выделит поле эдитора красным т.к. там то не обычный импут

[guest] peso
Было сказано: Среда, 02 Ноябрь 2011
именно полей с CKEditor'oм.
при отправке формы submit'ом все норм,
поля не подсвечиваются, но хотя бы ошибки выводятся.
получается, что при потере фокуса CKEditor'ом валидация не происходит, т.к запрос не отправляется.
могу и сам наваять проверку на JS, но надеюсь, что это можно решить более цивилизованно.
в форме'enableAjaxValidation'=>true, и $this->performAjaxValidation($model); раскоментирован


