Проблемы с CKeditor? сбрасывает html теги
Всем привет! Есть такой код, который редактирует данные пользователя с фронтенда, код полностью рабочий, но проблема в CKeditor, при заполнении с фронтенда все html теги в редакторе проставляются, а после отправки формы в редакторе все html теги сбрасываются, кроме и в админку приходит тоже все в теге .
Дополнительное поле пользователя сделал через ExtraFields, в админке тип поля «О себе» тоже текстовый редактор. Может кто сталкивался как сделать, что бы Ckeditor сохранял все html теги и передавал это в админку. Может есть какие-нить замены, другие текстовые редакторы. Пробовал с Tinymce, тоже самое.
Дополнительное поле пользователя сделал через ExtraFields, в админке тип поля «О себе» тоже текстовый редактор. Может кто сталкивался как сделать, что бы Ckeditor сохранял все html теги и передавал это в админку. Может есть какие-нить замены, другие текстовые редакторы. Пробовал с Tinymce, тоже самое.
[[UpdateProfile?
&validate=`fullname:required`
&reloadOnSuccess=`1`
&preHooks=`hookProfileUpdatePhoto`
]]
<div class="form-block-wr">
<div class="form-block">
[[+login.update_success:is=`1`:then=`<div class="alert alert-success" role="alert">[[%login.profile_updated? &namespace=`login` &topic=`updateprofile`]]</div>`:else=`[[+error.message:notempty=`<div class="updprof-error alert alert-danger" role="alert">[[+error.message]]</div>`]]`]]
<!-- форма, содержащая кнопку для удаления фото -->
[[+photo:notempty=`<form class="form-items" action="[[~[[*id]]]]" method="post">
<div class="remove-wr">
<input type="hidden" name="remove-photo">
<input type="hidden" name="fullname" value="[[+fullname]]">
<input type="submit" class="btn btn-danger" value="Удалить фото" name="login-updprof-btn" id="login-updprof-btn">
</div>
</form>`]]
<div class="form-item form-item-photo">
<img src="[[+photo:default=`/assets/images/img-users/default.jpg`]]" class="" id="photouser" alt="[[+fullname]]">
</div>
<form class="form form-items" action="[[~[[*id]]]]" method="post" enctype="multipart/form-data">
<input type="hidden" name="nospam" value="">
<div class="form-item">
<label for="fullname" class="form-label">[[!%login.fullname? &namespace=`login` &topic=`updateprofile`]]</label>
<input type="text" name="fullname" class="form-control[[+error.fullname:notempty=` is-invalid`]] form-control-form" id="fullname" value="[[+fullname]]">
<div class="invalid-feedback">[[+error.fullname]]</div>
</div>
<div class="form-item">
<label for="website" class="form-label">[[!%login.website]]</label>
<input type="text" name="website" class="form-control[[+error.website:notempty=` is-invalid`]] form-control-form" id="website" value="[[+website]]">
<div class="invalid-feedback">[[+error.website]]</div>
</div>
<div class="form-item">
<label for="about_me" class="form-label">О себе</label>
<textarea name="about_me" class="form-control[[+error.about_me:notempty=` is-invalid`]] form-control-form" id="about_me">[[+about_me]]</textarea>
<div class="invalid-feedback">[[+error.about_me]]</div>
</div>
<!-- блок, содержащий поле photo, с помощью которого будем загружать фото -->
<div class="form-item form-item-ft">
<label for="photo" class="form-label">Фото</label>
<input type="file" id="photo" name="photo" class="form-control">
<div class="invalid-feedback"></div>
</div>
<input type="submit" class="btn btn-primary" value="Обновить" name="login-updprof-btn" id="login-updprof-btn">
</form>
</div>
</div>
<script src="https://cdn.ckeditor.com/ckeditor5/34.0.0/classic/ckeditor.js"></script>
<script src="https://cdn.ckeditor.com/ckeditor5/34.0.0/classic/translations/ru.js"></script>
<script>
ClassicEditor
.create(document.querySelector('#about_me'), {
allowedContent: true,
removePlugins: ['Table', 'MediaEmbed'], // Убираем плагины таблицы и медиа
language: 'ru'
})
.catch(error => {
console.error(error);
});
</script>
Комментарии: 2
1. Оставлять все тэги нельзя. Почитай про XSS
2. Если с TinyMCE, то тэги режет не редактор, а Login
2. Если с TinyMCE, то тэги режет не редактор, а Login
Спасибо, поискал инфу и тоже понял, что дело в login. Написал posthooks
<?php
// Получаем данные из запроса
$aboutMe = $modx->getOption('about_me', $_POST, '');
// Удаляем нежелательные HTML-теги (по желанию) и сохраняем с разрешёнными тегами
$allowedTags = '<p><a><strong><i>
<h2><h3><h4><ul><ol><li><blockquote>'; // Разрешённые теги
$aboutMe = strip_tags($aboutMe, $allowedTags);
// Сохраняем данные обратно в базу данных
$userId = $modx->user->get('id');
$userProfile = $modx->getObject('modUserProfile', $userId);
if ($userProfile) {
$userProfile->set('about_me', $aboutMe);
$userProfile->save();
}
Заработало, выбрал только нужные теги. Все шикарно сохраняет.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.