使用ajax检查Codeigniter模块

时间:2013-01-24 08:36:31

标签: codeigniter module conditional-statements pyrocms

虽然我找不到适合这种需要的标题,但这是问题所在。

我有一个名为Files的现有模块。当我使用这个模块时,一些javascript运行并为不同类型的文件创建大拇指。它在windown负载下运行 现在我正在开发一个名为File Links的模块 在这个模块中,我需要在windows load上创建拇指 我已经从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());
    }
}

在这个方法中我正在检查模块名称,如果它不是文件然后获取所有文件,但是当这个方法被称为模块时总是文件。此方法驻留在文件控制器中。还有一件事是,我不想写一个ajax请求指向其他地方,因为它是前女仆并且工作得很好。
现在我如何设置一些让getAllFiles()运行的条件。

1 个答案:

答案 0 :(得分: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调用POST文件夹ID,它仍然只返回该文件夹中的文件。