Использование Imperavi Redactor с фреймворком Yii 2.
Когда текст не вводится, Imperavi Redactor создает эту разметку: <p><br></p>
,
К каждому разрыву строки добавляется и эта разметка.
Я хочу удалить это, потому что нет способа нормально проверить такой контент с RequiredValidator
,
Я хочу сделать удаление в beforeValidate()
событие и проверьте, введен ли какой-либо текст.
Если нет текста, кроме пустых тегов, пробелов и разрывов строк, сохранение не допускается.
В противном случае содержимое должно быть сохранено в исходном состоянии.
Это может быть достигнуто с помощью preg_replace
, но я не уверен, что это единственный вариант, созданный Redactor. И даже это единственное изменение, такое решение не является надежным в случае переключения параметров (например, настройка paragraphize
возможность false
), обновляет или изменяет WYSIWYG, например, на TinyMCE или CKEditor.
Например, если это будет <p><br/></p>
или же <p> </p>
, регулярное выражение не удастся.
Также хочу обрезать пробелы, например <p> <br></p>
,
Есть ли возможность в Redactor сделать это? removeEmpty вариант не помогает.
Я пытался очистить HTML с AutoFormat.RemoveEmpty вариант и результат был <p><br/></p>
(для содержания <p></br></p>
). Может быть, нам нужно указать пользовательский шаблон или список тегов, что именно должно быть удалено внутри абзацев.
Нашел это решение:
use yii\helpers\HtmlPurifier;
$text = HtmlPurifier::process($model->text, [
'HTML.ForbiddenElements' => ['p', 'br', ' '],
]);
Других решений пока нет …