首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >elFinder覆盖“rm”PHP

elFinder覆盖“rm”PHP
EN

Stack Overflow用户
提问于 2015-08-14 14:55:00
回答 1查看 130关注 0票数 0

我正在使用elFinder来管理网站的资产,它的默认功能非常好;但是,我需要向驻留在控制器上的几个PHP函数添加一些附加逻辑。

我希望添加逻辑的地方是<elfinder_Dir>/PHP/elFinderVolumeLocalFileSystem.php,特别是在函数_unlink($path)中,在实际删除文件之前,我想调用另一个类来销毁该资产的数据库条目。

原始函数如下所示:

代码语言:javascript
复制
protected function _unlink($path) {
    return @unlink($path);
} 

当我尝试添加如下代码时:

代码语言:javascript
复制
protected function _unlink($path) {
    var_dump($path);
    return @unlink($path);
} 

代码语言:javascript
复制
//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

为什么当我添加自定义逻辑时,标题内容类型会被更改?是否有更好的方法将此功能添加到项目中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-17 16:46:43

我的问题的答案是很直截了当。

1) error_reporting(0);消除了与为我的文件使用适当的命名空间有关的所有错误,我将其更改为error_reporting(E_ALL),以便看到真正的问题。

2)文件需要添加到namespace中,因为我使用的名称空间没有任何额外的include_once()调用。

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

代码语言:javascript
复制
$class = 'elFinderVolume'.(isset($o['driver']) ? $o['driver'] : '');

通过以下方式:

代码语言:javascript
复制
$class = __NAMESPACE__ . '\\elFinderVolume'.(isset($o['driver']) ? $o['driver'] : '');

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

一旦这些改变,一切都是好的,我可以添加我自己的逻辑,我喜欢。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32012984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档