0

このニーズに合うタイトルが見つかりませんが、ここに問題があります。

Files という既存のモジュールがあります。このモジュールを使用すると、JavaScript が実行され、さまざまな種類のファイルのサムが作成されます。ウィンドウロードで実行されます。
現在、File Links というモジュールを開発しています。
このモジュールでは、Windows の読み込み時にサムを作成する必要があります。
Files モジュールからコードをコピーしました。
ここにいくつかのコードがあります

public function folder_contents()
{
    $parent = $this->input->post('parent');
    echo json_encode(Files::folder_contents($parent));
}

これは、ajax リクエストからの親パラメーターを受け取り、フォルダーの内容を取得します。
すべてのファイルを表示したい。このために、すべてのファイルを取得するモデルの別の方法を作成しました。
問題は、ロード時にファイル リンク モジュールにいる間に ajax リクエストが実行され、上記のメソッドにヒットすることです。これが私が試したものです

public function folder_contents()
{
    $parent = $this->input->post('parent');
    $modules    =   $this->router->fetch_module();

    if($modules == 'files'){
        echo json_encode(Files::folder_contents($parent));
    }else{
        echo json_encode(Files::getAllFiles());
    }
}

このメソッドでは、ファイルでない場合はモジュール名をチェックしてからすべてのファイルを取得しますが、このメソッドが呼び出されるたびにモジュールは常にファイルになります。このメソッドは、Files Controller にあります。そして他のことは、それがプリメイドでうまく機能するので、他の場所を指すように ajax リクエストを書きたくないということです。
getAllFiles() を実行させる条件を設定するにはどうすればよいですか。

4

1 に答える 1

0

モジュールが常に「ファイル」として表示される理由は、どのモジュールがajaxリクエストをトリガーしたかに関係なく、 ajaxリクエストがFilesモジュールを呼び出すためです。別のリクエストです。

これを機能させるには、$ parent値を使用して、すべてのファイルを返すか、特定の親フォルダーを持つファイルだけを返すかを決定できます。カスタムajax呼び出しからPOST値を削除すると、folder_contents()は以下に示すようにすべてのファイルを返します。

public function folder_contents()
{
    $parent = $this->input->post('parent');

    if($parent){
        echo json_encode(Files::folder_contents($parent));
    }else{
        echo json_encode(Files::getAllFiles());
    }
}

デフォルトのajax呼び出しはフォルダーIDをPOSTするため、そのフォルダーからのファイルのみが返されます。

于 2013-01-25T02:46:23.410 に答える