2014-12-08 2 views
1

Использование Imperavi Redactor с рамкой Yii 2.Удалить пустой тег в Imperavi Redactor

Когда текст не введен, Imperavi Redactor производит эту разметку: <p><br></p>. Для каждой разрывы строки также добавляется эта разметка.

Я хочу удалить это, потому что нет возможности нормально проверить такой контент с помощью RequiredValidator. Я хочу сделать удаление в событии beforeValidate() и проверить, не введен ли какой-либо текст. Если нет текста, кроме пустых тегов, пробелов и разрывов строк, сохранение не допускается. В противном случае содержимое должно быть сохранено в исходном состоянии.

Это может быть достигнуто с помощью preg_replace, но я не уверен, что это единственное изменение, созданное Redactor. И даже это единственное решение, такое решение не является надежным при переключении опций (например, установка paragraphize опции false), обновляет или изменяет WYSIWYG, например, TinyMCE или CKEditor.

Например, если это будет <p><br/></p> или <p>&nbsp;</p>, regex не удастся. Также мне нужны триммеры, например <p> <br></p>.

Есть ли возможность в Redactor сделать это? removeEmpty опция не помогает.

Я пробовал очиститель HTML с опцией AutoFormat.RemoveEmpty, и результат был <p><br/></p> (для контента <p></br></p>). Возможно, нам нужно указать пользовательский шаблон или список тегов, что именно должно быть удалено внутри абзацев.

ответ

1

Найдено это решение:

use yii\helpers\HtmlPurifier; 

$text = HtmlPurifier::process($model->text, [ 
    'HTML.ForbiddenElements' => ['p', 'br', '&nbsp;'], 
]); 
Смежные вопросы