Использование CodeIgniter - плохая практика загружать представление в цикле - PullRequest
0 голосов
/ 13 ноября 2009

Я только начал работать с 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';

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

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

Ответы [ 3 ]

3 голосов
/ 14 ноября 2009

Я бы не советовал называть вашу модель с вашей точки зрения. Это не лучшая практика при попытке придерживаться стандартов 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);

View

<?php foreach ($users as $user) {
    echo '<p>' . $user->first_name . '</p>';
    echo '<p>' . $user->last_name . '</p>';
}?>
2 голосов
/ 13 ноября 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.

2 голосов
/ 13 ноября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...