我有一个包含文本文件的目录,我通常在php中使用DirectoryIterator类avaialble来迭代目录并获取文件名。我在使用CI进行尝试时遇到了麻烦。我对CI完全不熟悉,所以请耐心等待:)。
我在我的默认控制器名为myblog 中有这样的东西(我在索引函数之后写了这个函数)。
<?php
public function diriterate()
{
$this->load->helper('directory');
$mapi=directory_map('./myfolder/');
$this->load->view('index.php',$mapi);
}
?>
我在我的视野中尝试这样的事情
<?php
foreach($mapi as $key)
{
echo $key;
}
?>
我在这里做错了吗?
(1)如果我的理解是正确的,我可以像mysitename / class / function一样运行(在我的情况下是localhost / myblog / diriterate )(2 )我的目录在rootfolder(rootfolder / myfolder)里面,所以不需要baseurl或者什么?
我应该只使用DirectoryIterator类在视图中执行此操作,还是仅为迭代创建另一个控制器,我真的很困惑,欢迎任何帮助。谢谢。提前感谢。
答案 0 :(得分:3)
遵循MVC惯例。
模型 models / folder_model.php
class Folder_model extends CI_Model {
function iterate() {
$this->load->helper('directory');
$map = directory_map('./myfolder', 1);
return $map;
}
}
对于目录映射,它将查看应用程序的根目录,即包含index.php
的路径。请注意1
将导致它不是递归的,并且仅在该顶级路径上。
控制器 controllers / folder.php
class Folder extends CI_Controller {
function index() {
$this->load->model('folder_model');
$map = $this->folder_model->iterate();
$this->load->view('folder', array('map' => $map));
}
}
查看 views / folder.php
<? foreach ($map as $item): ?>
<?= $item ?>
<? endforeach; ?>
然后可以在http://localhost/index.php/folder
查看。