# Пользовательский фильтр
Обратите внимание!
Доступно только в профессиональной и бизнес редакции
Скрипты пользовательских фильтров хранятся в директории application/filters
.
# Создание скрипта
Обратите внимание, что имя класса должно быть таким же, как имя файла.
Описание объектов читайте на странице Internals.
Создадим новый файл application/filters/example.php
. Пример кода:
<?php
namespace Filters;
use Core\Filter\AbstractFilter;
use Core\Locale\LocaleService;
use Traffic\Model\StreamFilter;
use Traffic\RawClick;
class example extends AbstractFilter
{
public function getModes()
{
return [
StreamFilter::ACCEPT => LocaleService::t('filters.binary_options.' . StreamFilter::ACCEPT),
StreamFilter::REJECT => LocaleService::t('filters.binary_options.' . StreamFilter::REJECT),
];
}
/**
* Filter settings template
*/
public function getTemplate()
{
return '<input class="form-control" ng-model="filter.payload" />';
}
/**
* Check if $rawClick passes the filter (true - passed, false - failed)
*/
public function isPass(StreamFilter $filter, RawClick $rawClick)
{
$value = $filter->getPayload();
return ($filter->getMode() == StreamFilter::ACCEPT && $rawClick->getSubIdN(1) == $value)
|| ($filter->getMode() == StreamFilter::REJECT && $rawClick->getSubId(1) == $value);
}
}
Вы должны переопределить следующие методы:
Метод класса | Описание |
---|---|
getModes | Какие режимы фильтра доступны |
getTemplate | Шаблон настроек фильтра. Подробнее о шаблонизаторе angular.js |
isPass | Здесь происходит проверка прохождения фильтра. true — фильтр пропускает клик, false –фильтр не пропускает клик в поток |
getServerRequest() | Получить объект PSR-7 Server Request |
# Описание объекта Stream Filter $filter
Метод | Описание |
---|---|
$filter->getPayload() | Содержимое фильтра |
$filter->getMode() | Режим фильтра |
# Можно задать название фильтру на кириллице?
На текущий момент нет.
# Как получить параметры запроса?
$this->getServerRequest()
вернет объект класса PSR-7 ServerRequest
# Cтандарт кодирования символов документа
Обязательно UTF-8