mFilter2 и virtualPage - Cannot declare class myCustomFilter, because the name is already in use
Друзья, никто не сталкивался с такой проблемой: пытаюсь вывести на сайте каталог при помощи mFilter2, создал свои фильтры — все работает, но если вывожу его при помощи virtualPage — выдает следующую ошибку:
В чем может быть проблема и как ее лечить? Спасибо.
Fatal error: Cannot declare class myCustomFilter, because the name is already in use in /core/components/msearch2/custom/filters/my.class.php on line 156
В чем может быть проблема и как ее лечить? Спасибо.
Комментарии: 5
Уже всю голову сломал, так и не нашел решения( Никто не сталкивался с такой проблемой или аналогичной? Куда хотя бы копать?
Наверное фаш файл 2 раза подключается через include или require… ищите где и почему.
Или меняйте не _once.
Или меняйте не _once.
Дело не в файле точно. Проблема возникает, как только указываешь в настройках mSearch2 пункт «mse2_filters_handler_class». Причем неважно какое значение туда ставишь и какой класс используется в файле /msearch2/custom/filters/*.class.php — результат один и тот же.
Более того, пробовал конструкцию
Как временное решение, все созданные фильтры пишу в конец секции
Более того, пробовал конструкцию
class myCustomFilter extends mse2FiltersHandler {}
переносить в конец файла /msearch2/model/msearch2/filters.class.php — тоже самое.Как временное решение, все созданные фильтры пишу в конец секции
class mse2FiltersHandler {}
файла filters.class.php, без подключения доп. класса и расширения mse2FiltersHandler. При обновлении соответственно есть шанс, что все слетит, поэтому храню фильтры еще отдельно, чтобы их восстановить можно было.
У меня нет свежего кода mSearch2.
Но в старом я за 2 минуты нашел код подключения файла кастомных фильтров в файле msearch2.class.php:
Ищите, почему 2 раза подключается!
Но в старом я за 2 минуты нашел код подключения файла кастомных фильтров в файле msearch2.class.php:
public function loadCustomClasses($dir)
{
...
include $customPath . '/' . $file;
...
}
здесь используется include. В вашем случае он кажется 2 раза вызывается, и пытается еще раз объявить класс myCustomFilter, который уже объявлен.Ищите, почему 2 раза подключается!
Спасибо! Буду разбираться, где вызов повторный идет, а пока временно поменял на include_once и все заработало.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.