instantsoft / icms2

Self-hosted Site Management System
https://instantcms.ru
GNU General Public License v2.0
294 stars 120 forks source link

Ошибка при вызове нескольких визинг редакторов #1361

Closed AtlantisWebSt closed 2 years ago

AtlantisWebSt commented 2 years ago

Используемая версия InstantCMS: 2+

Если на странице попытаться вывести несколько визинг редакторов(каждый в своей форме) имеющих одинаковый первый параметр "$field_id", то это сработает только для первого поля, для всех остальных будет ошибка т.к. $field_id записывается и в name и в id, а при нескольких одинаковых id на странице редактор выводится только для одного.

<?php echo html_wysiwyg('content', '', $editor_params['editor'], $editor_params['options']); ?>

Можно генерировать рэндомный id либо например передавать в html_wysiwyg еще один параметр и если он задан то id берется из него, а если нет то работает как и ранее.

fuzegit commented 2 years ago

Как вы выводите редакторы? Конструктор форм, например, такой проблемы не имеет.

AtlantisWebSt commented 2 years ago

Вывод идет напрямую в шаблоне. Это сторонний компонент и не завязан на полях и контенте. Экшен выводит шаблон в котором есть несколько почти одинаковых форм в каждой из которых есть визинг редактор. Принимающий экшен был строго завязан на приме этого поля как строки с одним name'ом. Пройдя по цепочке функций выяснил, что есть еще вариант имя поля сделать массивом например content[23] , id преобразуется в content_23. Найдя это переписал прием этого поля и все стало норм. Но думаю если сделать рандомную генерацию для id визинг редактора было бы тоже не плохо. Думаю теперь это сложно назвать ошибкой, скорей хотелкой)

fuzegit commented 2 years ago

Но думаю если сделать рандомную генерацию для id визинг редактора было бы тоже не плохо.

Нет, это плохо. ID зависит от имени поля.