2012-07-07 2 views
2

У меня есть справочник, содержащий текстовые файлы, я нормально использую класс DirectoryIterator avaialble в php, чтобы перебирать каталог и получать имена файлов. У меня есть проблема с CI. Я совершенно не знаком с CI, поэтому, пожалуйста, несите меня :).Иконок каталогов с использованием Codeigniter

У меня есть что-то подобное в моем контроллере по умолчанию с именем 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/класса/функции (в моем случае локальный/MyBlog/diriterate) (2) Мой каталог находится внутри RootFolder (RootFolder/myfolder), поэтому нет необходимости в baseurl или что-то в этом роде.

Должен ли я сделать это просто в представлении, используя класс DirectoryIterator, или просто создать другой контроллер для итерации, я действительно смущен, любая помощь приветствуется. Спасибо заранее.

+0

Возможно, вы должны начать использовать CI после прочтения шаблона MVC для веб-приложений. Это может помочь вам лучше структурировать ваше приложение. Также обратитесь к руководству пользователя CI для справки с конфигурациями воспламенителя кода и доступными библиотеками и классами. – user1190992

+0

appart from proper ** Структура MVC ** при передаче данных в ** вид ** вам нужно отправить его как массив ('mapi' => $ mapi) – Jakub

+0

спасибо, ребята, мне кажется, мне нужно улучшить свое понимание mvc немного больше. – jathin

ответ

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 вызовет его нерекурсивность и только на этом пути верхнего уровня.

Контроллер Контроллеры/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)); 
    } 
} 

Посмотреть просмотров/folder.php

<? foreach ($map as $item): ?> 
    <?= $item ?> 
<? endforeach; ?> 

Это тогда будет просматриваться на http://localhost/index.php/folder.

+0

Большое спасибо, я думал, что смогу выполнить это без использования модели, есть ли такая возможность? – jathin

+1

Вы всегда должны использовать соглашение MVC. Если ваша кодовая база становится больше, и вы все вставляете в контроллеры, вы побеждаете цель MVC, и ваш код действительно будет запутан. В общем, это поможет вам в конце. –

Смежные вопросы