Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File CodeIgniter-使用opendir的文件和文件夹列表_File_List_Codeigniter_Directory_Opendir - Fatal编程技术网

File CodeIgniter-使用opendir的文件和文件夹列表

File CodeIgniter-使用opendir的文件和文件夹列表,file,list,codeigniter,directory,opendir,File,List,Codeigniter,Directory,Opendir,我对某些编程技术相当陌生。一般来说,OOP和MVC是非常新的。我敢肯定这是我的第一个问题 我刚刚下载了CodeIgniter,并为自己准备了一个小项目 我在服务器上有一个文件和文件夹列表,我想使用opendir、readdir和closedir等在ul和li的网页上列出它们-我以前在函数中已经这样做过,但不知道从哪里开始使用CodeIgniter 是否有帮助程序或库已经这样做了?如果没有,最好的方法是什么?我应该把代码放在model文件夹中吗 真糊涂 如果我这样做,我会: (1) 使用采用目录名

我对某些编程技术相当陌生。一般来说,OOP和MVC是非常新的。我敢肯定这是我的第一个问题

我刚刚下载了CodeIgniter,并为自己准备了一个小项目

我在服务器上有一个文件和文件夹列表,我想使用opendir、readdir和closedir等在ul和li的网页上列出它们-我以前在函数中已经这样做过,但不知道从哪里开始使用CodeIgniter

是否有帮助程序或库已经这样做了?如果没有,最好的方法是什么?我应该把代码放在model文件夹中吗


真糊涂

如果我这样做,我会:

(1) 使用采用目录名并返回 文件数组

(2) 在我的控制器中,我将加载库并使用它获取感兴趣文件夹的文件列表

(3) 然后,我将加载一个视图,同时将文件名数组传递给 我会整理这份名单

开始学习如何使用控制器加载包含数据的视图(从静态数组开始)。然后学习如何创建库并与控制器集成

您还可以阅读CodeIgniter的文件助手库,除非您想使用本机PHP函数

另外,了解PHP单元测试

我倾向于使用模型来处理MySQL数据库中的数据。在您的情况下,您正在处理有关文件系统的信息


祝你好运,CI是PHP/MySQL框架的好选择

首先,欢迎来到CodeIgniter。这是规则。现在

您需要一个控制器函数来实际处理目录,如下所示:

public function dir_to_array($dir, $separator = DIRECTORY_SEPARATOR, $paths = 'relative') 
{
    $result = array();
    $cdir = scandir($dir);
    foreach ($cdir as $key => $value)
    {
        if (!in_array($value, array(".", "..")))
        {
            if (is_dir($dir . $separator . $value))
            {
                $result[$value] = $this->dir_to_array($dir . $separator . $value, $separator, $paths);
            }
            else
            {
                if ($paths == 'relative')
                {
                    $result[] = $dir . '/' . $value;                    
                }
                elseif ($paths == 'absolute')
                {
                    $result[] = base_url() . $dir . '/' . $value;
                }
            }
        }
    }
    return $result;
} 
现在需要调用该函数以返回结果,类似于:

$modules['module_files']=$this->dir_to_数组(APPPATH.'modules')

这将把结果放在一个名为$modules的变量中,您可以以任何方式使用它,通常将其放在如下视图中:

<?php

    if (isset($module_files) && !empty($module_files))
    {
        $out = '<ul>';
        foreach ($module_files as $module_file)
        {
            if (!is_array($module_file))
            {

                // the item is not an array, so add it to the list.
                $out .= '<li>' . $module_file . '</li>';
            }
            else
            {
                // Looping code here, as you're dealing with a multi-level array.
                // Either do recursion (see controller function for example) or add another
                // foreach here if you know exactly how deep your nested list will be.
            }
        }
        $out .= '</ul>';
        echo $out;
    }

?>
$this->load->view('文件夹/文件',$modules)

如果为load->view函数提供可选的第三个参数TRUE,则该视图的结果将再次返回给您,供您在任何地方使用,否则它将在您调用它的地方回显。视图可能如下所示:

<?php

    if (isset($module_files) && !empty($module_files))
    {
        $out = '<ul>';
        foreach ($module_files as $module_file)
        {
            if (!is_array($module_file))
            {

                // the item is not an array, so add it to the list.
                $out .= '<li>' . $module_file . '</li>';
            }
            else
            {
                // Looping code here, as you're dealing with a multi-level array.
                // Either do recursion (see controller function for example) or add another
                // foreach here if you know exactly how deep your nested list will be.
            }
        }
        $out .= '</ul>';
        echo $out;
    }

?>

Ha。这很有趣。我在寻找别的东西,无意中发现了我的第一个CI问题,却没有意识到是我:D

我在不到一个月的时间里就完成了CI

我找到了Directory Helper-Directory_映射,它基本上将文件夹结构放入数组中

我在模型中创建了一个递归函数,将其转换为适当的下拉菜单。。。当它是一个文件时,它会添加一个指向该文件的a href链接


我希望您在过去的一年中已经了解了MVC体系结构:)

现在谈谈你的问题。您请求的帮助程序或库确实存在。对于同一个“问题”,我使用了directory helper及其函数directory\u map('relative/path/to/your/directory')。此函数递归地从目录中获取内容,并将其按如下方式排序到数组中

    Array
    (
    [banner] => Array
        (
        [0] => banner1.jpg
        [1] => banner2.jpg
        [2] => banner3.jpg
        [3] => banner4.jpg
        )
    [galerie] => Array
        (
        [0] => 0-PB083393.JPG
        [1] => DSCN2897.JPG
        [2] => DSCN2908.JPG
        [3] => DSCN2917.JPG
        [thumb] => Array
            (
                [0] => 0-PB083393_thumb.JPG
                [1] => DSCN2897_thumb.JPG
                [2] => DSCN2908_thumb.JPG
            )
        )
    [0] => mapa.jpg
    )
这是非常整洁的,您可以在foreach循环中使用它,并添加ul/li标签

也许一年后这个问题就无关紧要了,但我希望它能帮助其他人