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