Использование CodeIgniter - это плохая практика для загрузки представления в цикле

Я только начал работать с CodeIgniter, и мне интересно, не замедлится ли это, если я помещу такой код в цикл.

    $data['title'] = 'the title';
    $data['content'] = 'blah blah blah';
    $this->load->view('result', $data);

Я не совсем уверен, как CodeIgniter обрабатывает вещи, или сам PHP в этом отношении. Например, если бы я сделал это. Будет ли файл считываться на каждой итерации?

    $data['title'] = 'the title';
    $data['content'] = 'blah blah blah';
    include 'result.php';

Также можно ли загружать элементы управления в цикле, или я упускаю что-то фундаментальное, помещая элемент управления в цикл? Спасибо.

Дополнительная информация. У меня есть результаты поиска для профилей пользователей... и я подумывал сделать уменьшенную версию представления профиля для отображения на странице результатов поиска. Было бы плохой практикой использовать представление для этого?


person Serhiy    schedule 12.11.2009    source источник
comment
Зачем вам нужно включать представление $this-›load-›('result', $data); внутри петли? Немного больше информации было бы неплохо.   -  person tplaner    schedule 13.11.2009
comment
да. Звучит странно. загрузка вида в цикле   -  person GabiMe    schedule 13.11.2009


Ответы (3)


Я бы не рекомендовал называть вашу модель из вашего представления. Это не лучшая практика, когда вы пытаетесь придерживаться стандартов инфраструктуры MVC. Вызовите модель из вашего контроллера и передайте массив «users» в представление как часть $data. Теперь вы получаете доступ к массиву $users просто как к переменной в представлении. Подобно тому, что было у вас, но это возвращает доступ к модели в контроллер.

Контроллер

$data['title'] = 'the title';
$data['content'] = 'blah blah blah';
$data['users'] = $this->user_model->get_users();
$this->load->view('result', $data);

Вид

<?php foreach ($users as $user) {
    echo '<p>' . $user->first_name . '</p>';
    echo '<p>' . $user->last_name . '</p>';
}?>
person Adam    schedule 14.11.2009

Подумайте о перемещении цикла из контроллера в файл представления (в контроллере вы должны подготовить все данные перед загрузкой файла представления). У вас будет только один вызов для загрузки файла просмотра, и в файле просмотра вы можете распечатать информацию в цикле цикла, как хотите.

person Sergey Kuznetsov    schedule 12.11.2009

Цикл в представлении.

<div>
    <?php foreach ($this->user_model->get_users() as $users): ?>
        <p><?php echo $user->first_name;?></p>
        <p><?php echo $user->last_name;?></p>
    <?php endforeach; ?>
</div>

Этот пример напрямую получает данные из модели, которая много раз обсуждалась на форумах codeigniter.

person Teej    schedule 13.11.2009
comment
Пожалуйста, никогда не вызывайте модель из представления. Ваш контроллер должен получить данные из модели, а затем передать их вашему представлению. - person Fer; 11.02.2010
comment
@Ферди. Это лучший способ. Я не согласен, что вы не должны, если возникнет необходимость. См.: phpwact.org/pattern/model_view_controller. - person Teej; 12.02.2010
comment
Я исправляюсь, вы убедили меня, что в некоторых ситуациях это не так плохо, как я себе это представлял. - person Fer; 15.02.2010