使用Codeigniter进行目录迭代

时间:2012-07-07 14:36:54

标签: php codeigniter

我有一个包含文本文件的目录,我通常在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类在视图中执行此操作,还是仅为迭代创建另一个控制器,我真的很困惑,欢迎任何帮助。谢谢。提前感谢。

1 个答案:

答案 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查看。