0

Web サイトのアセットを管理するために 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);
}

画面に次のアラートが表示されます。

不正なバックエンド

また、そのメッセージが表示されると、「ネットワーク」タブのヘッダーに、elFinder の JS 部分で期待されるのではtext/htmlなく、応答ヘッダーのコンテンツ タイプが表示されることにも気付きました。application/json

カスタム ロジックを追加すると、ヘッダーの Content-type が変更されるのはなぜですか? この機能をプロジェクトに追加するより良い方法はありますか?

4

1 に答える 1

1

私の質問に対する答えは、非常に簡単であることがわかりました。

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'] : '');

これにより、ドライバー (現在はネームスペースにあります) を適切にロードできます。

これらの変更が行われると、すべてがうまくいき、好きな場所に独自のロジックを追加できます。

于 2015-08-17T16:46:43.090 に答える