我正在使用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);
}我在屏幕上收到这个警告:

我还注意到,当消息发出时,我的"Network“选项卡中的标题显示了响应头内容类型的text/html,而不是elFinder的JS部分所期望的application/json。
为什么当我添加自定义逻辑时,标题内容类型会被更改?是否有更好的方法将此功能添加到项目中?
发布于 2015-08-17 16:46:43
我的问题的答案是很直截了当。
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'] : '');它允许正确加载驱动程序(现在位于命名空间中)。
一旦这些改变,一切都是好的,我可以添加我自己的逻辑,我喜欢。
https://stackoverflow.com/questions/32012984
复制相似问题