0

我正在使用 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);
}

我在屏幕上收到此警报:

畸形后端

我还注意到,当给出该消息时,我的“网络”选项卡中的标题显示响应标题内容类型,text/html而不是application/jsonelFinder 的 JS 部分所期望的。

为什么添加自定义逻辑时标题 Content-type 被更改?有没有更好的方法将此功能添加到项目中?

4

1 回答 1

1

我的问题的答案很直接。

1)error_reporting(0);正在压缩与为我的文件使用正确的命名空间相关的所有错误,我将其更改为,error_reporting(E_ALL)以便我可以看到真正的问题。

2)需要将文件添加到 a namespace,因为我使用了相同的命名空间,所以我没有任何额外的include_once()调用。

接下来我必须添加替换这一行:

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

和:

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

这允许正确加载驱动程序(现在位于命名空间中)。

一旦进行了这些更改,一切都很好,我可以在我喜欢的地方添加我自己的逻辑。

于 2015-08-17T16:46:43.090 回答