javascript — elFinder переопределяет переполнение стека rm

Я использую elFinder для управления активами веб-сайта, и его функциональность по умолчанию прекрасно работает; однако мне нужно добавить некоторую дополнительную логику к нескольким функциям PHP, которые находятся на одном из моих контроллеров.

Место, где я хотел бы добавить логику <elfinder_Dir>/PHP/elFinderVolumeLocalFileSystem.php конкретно в функции _unlink($path) перед тем, как файл будет фактически удален, я хотел бы вызвать другой класс, чтобы уничтожить записи базы данных для этого ресурса.

Оригинальная функция выглядит так:

protected function _unlink($path) {
return @unlink($path);
}

Когда я пытаюсь добавить код, как показано ниже:

protected function _unlink($path) {
var_dump($path);
return @unlink($path);
}

ИЛИ ЖЕ

//top of file...
use controllers\ResourceManager;

//OR
//include <pathToResourceManager>

//...

protected function _unlink($path) {
ResourceManager::delteFromDB();
return @unlink($path);
}

Я получаю это предупреждение на экране:

MalformedBackend

Я также заметил, что при получении этого сообщения в заголовке на вкладке «Сеть» отображается тип содержимого заголовка ответа: text/html вместо application/json как и ожидалось частью JS elFinder.

Почему изменяется заголовок Content-type, когда я добавляю собственную логику?
Есть ли лучший способ добавить эту функциональность в проект?

0

Решение

Ответ на мой вопрос оказался довольно прямым.

1) error_reporting(0); уничтожил все мои ошибки, связанные с использованием правильного пространства имен для моих файлов, я изменил это на error_reporting(E_ALL) так что я мог видеть реальную проблему.

2) Файлы должны быть добавлены в namespace, так как я использовал то же пространство имен, у меня не было никаких дополнительных include_once() звонки.

Далее мне пришлось добавить заменить эту строку:

$class = 'elFinderVolume'.(isset($o['driver']) ? $o['driver'] : '');

С:

$class = __NAMESPACE__ . '\\elFinderVolume'.(isset($o['driver']) ? $o['driver'] : '');

Что позволяет загружать драйвер (который теперь находится в пространстве имен).

После того, как эти изменения были сделаны, все хорошо, я могу добавить свою собственную логику, где мне угодно.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]