Почему возникает ошибка 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 по дефолту?)
Спасибо за Ваш комментарий. Не делал, качал готовый архив. Потом поменял ему всю структуру.
Сегодня в процессе борьбы с задачей наткнулся на ваш ответ на этот вопрос: https://github.com/yiisoft/yii2/issues/740
Но рождается другой вопрос =)
Как его включить в состав дистрибутива? Где можно почитать про composer install именно для этого случая?
После того как вы добавите 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