首先,欢迎来到 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_array(APPPATH . 'modules');
这会将结果放入一个名为 $modules 的变量中,您可以以任何您想要的方式使用它,通常将其放在如下视图中:
$this->load->view('folder/file', $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;
}
?>
我没有检查这个语法错误,但它应该可以正常工作。希望这可以帮助..