2

我有一个包含文本文件的目录,我通常使用 php 中可用的 DirectoryIterator 类来迭代目录并获取文件名。我在使用 CI 时遇到了麻烦。我对 CI 完全陌生,所以请多多包涵:)。

我在名为 myblog 的默认控制器中有类似的东西 (我在 index 函数之后编写了该函数)。

<?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/myfolder)中,所以不需要 baseurl 或某物 ?。

我应该使用 DirectoryIterator 类在视图中简单地执行此操作,还是只为迭代创建另一个控制器,我真的很困惑,欢迎任何帮助。提前致谢。

4

1 回答 1

3

遵循 MVC 约定。

模型模型/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将导致它是非递归的,并且仅在该顶级路径上。

控制器控制器/文件夹.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.

于 2012-07-07T15:29:00.137 回答