Интеграция CKeditor в мой Symfony 2.5

Я загружаю ckeditor и хотел бы интегрировать его на свой веб-сайт, созданный с использованием Symfony 2.5. Судя по документации, кажется, что весь сторонний код должен помещаться в каталог vendor, но что тогда? в том, что все? если я помещу весь код ckeditor в каталог vendor, то как насчет файлов js? разве они не входят внутрь представления? Я искал в Интернете решение этой проблемы, и большинство из них, похоже, указывают на использование пакета, доступного в Интернете, которого я хотел бы избежать, и оставить его в качестве последнего средства.

Я использовал ckeditor раньше с пользовательским php, и это мой первый раз с symfony framework, я знаю, что мы должны создать textarea и назначить ему id или class, но я ищу шаги до этого, например

1) Добавьте ckeditor в vendor

2) добавить его в автозагрузку или что-то в этом роде

3) ...

Я буду очень признателен, если кто-то может указать мне, как это сделать?


person Baig    schedule 30.09.2014    source источник


Ответы (3)


Я не уверен, что это правильный способ сделать это, но это то, что сработало для меня.

  1. В итоге я скопировал файлы ckeditor внутрь bundle/Resources/public/js
  2. Установите ресурсы, выполнив команду php app/console assets:install
  3. В вашем файле twig добавьте <script src="{{ asset('bundles/blog/js/ckeditor.js') }}"></script> (пожалуйста, не забудьте изменить его на имя вашего пакета)
  4. Назначьте класс ckeditor вашему полю textarea, вот как я это сделал {{ form_widget(form.description, { 'attr': {'class': 'ckeditor'} }) }}

и я вижу редактор на своем экране введите здесь описание изображения

Если у кого-то еще есть идея получше (кроме использования пакета), я хотел бы услышать от них

person Baig    schedule 30.09.2014

Ответ Baigs будет работать, но проблема возникает, когда вы используете CKEditor в разных пакетах, так как вы будете копировать весь исходный каталог как актив для каждого пакета.

Другое решение — использовать «egeloen/ckeditor-bundle»: «~2.0» в файле composer.

Затем вы можете создать поле ввода ckeditor в своей форме и указать его в своем файле ветки.

Вы также можете создать элемент ckeditor в соответствии с руководством CKeditor на странице ветки непосредственно через javascript.

<script src="/bundles/ivoryckeditor/ckeditor.js"></script>
....
<textarea id="editor1"></textarea>
...
<script>
CKEDITOR.replace('editor1');
</script>

Обратите внимание, что пользовательские плагины могут быть болезненными, плагин должен храниться в веб-каталоге проекта, но он удаляется каждый раз, когда вы обновляете ресурсы композитора и дампа. Мое решение состояло в том, чтобы создать проект scriptHandler, который запускается с композитором и копирует исходные файлы в общедоступный веб-каталог при обновлении.

person mark    schedule 12.11.2014

Как писал Марк, вы можете использовать IvoryCKEditorBundle

http://symfony.com/doc/master/bundles/IvoryCKEditorBundle/installation.html

После установки, если вы хотите добавить плагины, вы можете использовать конфигурации, как показано ниже:

ivory_ck_editor:
    default_config: default
    plugins:
        block:
            path:     "/bundles/mybundle/js/ckeditor/plugins/block/"
            filename: "plugin.js
   .....
   configs:
      default:
          extraPlugins: "block"
   ....
   toolbars:
      configs:
         default: ["Block"]

В моем случае у меня есть пакет Symfony под названием MyBundle. В Resources/public/js у меня есть файлы js.

Когда я загружаю ресурсы, мои файлы помещаются в веб-папку /bundles/mybundle/js.

В конфигурации я говорю IvoryCKEditorBundle искать новые файлы плагинов в этой папке.

После того, как в моей конфигурации по умолчанию я включаю свой новый плагин ckeditor.

И в последней строке я добавляю новый плагин на панель инструментов.

person soipo    schedule 12.07.2016