elFinder 覆盖 'rm' PHP
elFinder override 'rm' PHP
我正在使用 elFinder 来管理网站的资产,它的默认功能非常有用;然而,我需要向驻留在我的控制器中的几个 PHP 函数添加一些额外的逻辑。
我想添加逻辑的地方是 <elfinder_Dir>/PHP/elFinderVolumeLocalFileSystem.php
,特别是在函数 _unlink($path)
中,在实际删除文件之前我想调用另一个 class销毁此资产的数据库条目。
原始函数如下所示:
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" 选项卡中的 header 显示 text/html
的响应 Header Content-type 而不是application/json
正如 elFinder 的 JS 部分所期望的那样。
为什么在我添加自定义逻辑时 header Content-type 会发生变化?
有没有更好的方法将此功能添加到项目中?
我的问题的答案非常简单明了。
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'] : '');
这允许正确加载驱动程序(现在位于命名空间中)。
完成这些更改后,一切都很好,我可以在需要的地方添加我自己的逻辑。
我正在使用 elFinder 来管理网站的资产,它的默认功能非常有用;然而,我需要向驻留在我的控制器中的几个 PHP 函数添加一些额外的逻辑。
我想添加逻辑的地方是 <elfinder_Dir>/PHP/elFinderVolumeLocalFileSystem.php
,特别是在函数 _unlink($path)
中,在实际删除文件之前我想调用另一个 class销毁此资产的数据库条目。
原始函数如下所示:
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" 选项卡中的 header 显示 text/html
的响应 Header Content-type 而不是application/json
正如 elFinder 的 JS 部分所期望的那样。
为什么在我添加自定义逻辑时 header Content-type 会发生变化? 有没有更好的方法将此功能添加到项目中?
我的问题的答案非常简单明了。
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'] : '');
这允许正确加载驱动程序(现在位于命名空间中)。
完成这些更改后,一切都很好,我可以在需要的地方添加我自己的逻辑。