sidorenkoda
@sidorenkoda
Программист, верстальщик, руководитель проектов

Почему возникает ошибка Class 'HTMLPurifier_Config' not found?

Yii2

Возникает ошибка - Class 'HTMLPurifier_Config' not found

Из-за модификатора asHTML - 'format' => ['html'],

Вот шаблон, где возникает ошибка
<?=GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
[
'class' => DataColumn::className(),
'attribute' => 'name',
'label' => 'Роль'
],
[
'class' => DataColumn::className(),
'label' => 'Разрешенные доступы',
'format' => ['html'], // Из-за формата HTML возникает ошибка
'value' => function($data) { return implode('
',array_keys(ArrayHelper::map(Yii::$app->authManager->getPermissionsByRole($data->name), 'description', 'description')));}
],

----

Во фреймворке Yii2 есть файл BaseHtmlPurifier.php
в нем есть метод
public static function process($content, $config = null)
в методе вызывается -
$configInstance = \HTMLPurifier_Config::create($config instanceof \Closure ? null : $config);
а физически этого класса у меня нигде нет.

Сколько лапок зайцев нужно, чтобы это заработало?)

Почему оно не работает из коробки? Возможно не понимает каким доктайпом выводить, но почему не сделали HTML5 по дефолту?)
  • Вопрос задан
  • 1521 просмотр
Решения вопроса 2
SamDark
@SamDark
Yii2 core team
composer install делали?
Ответ написан
sidorenkoda
@sidorenkoda Автор вопроса
Программист, верстальщик, руководитель проектов
После того как вы добавите HTMLPurifier в ваш Yii2 во входном файле (у меня это - index.php), перед подключением Yii2 надо напистаь следующее:
// Подключить HTMLPurifier (пути у до него будут у Вас отличаться)
require_once $_SERVER['DOCUMENT_ROOT'] . '/!yii2/vendor/ezyang/htmlpurifier/library/HTMLPurifier.auto.php';

$config = HTMLPurifier_Config::createDefault();
$config->set('Core.Encoding', 'ISO-8859-1'); // replace with your encoding
$config->set('HTML.Doctype', 'HTML 4.01 Transitional'); // replace with your doctype
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify($dirty_html);

И не забыть создать папку (Serializer), если ее нет:
!yii2\vendor\ezyang\htmlpurifier\library\HTMLPurifier\DefinitionCache\Serializer
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
В файле входа (@app/web/index.php) добавить
require dirname(__DIR__) . '/vendor/autoload.php';
перед
require dirname(__DIR__) . '/vendor/yiisoft/yii2/Yii.php';
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы