Сообщение об ошибке продолжает возвращаться, говоря, что массив не определен. - PullRequest
0 голосов
/ 25 ноября 2011

Я занимаюсь разработкой сайта с использованием Codeigniter.Структура сайта проста, у меня в Model есть динамическое меню и БД для поиска контента.Затем назначьте метод для вызова их обоих в Controller.

У меня появляется странное сообщение об ошибке, в котором говорится, что массив не определен.

Я могу получить tabPhotos, он содержит данные.Вид:

<div id="container">
    <div id="photos">
        <?php echo "Count: ". count($tabPhotos); ?>
        <ul>
            <?php if (!is_array($tabPhotos) || empty($tabPhotos)) :?>
                <?php return null; ?>

                <?php foreach ($tabPhotos as $item) : ?>
                    <?php echo "Model: " . $item->url; ?>                   
                <?php endforeach; ?>
            <?php endif; ?>
        </ul>
    </div>
</div>

Контроллер:

public function loadMenu($file) {
    $data['tabMenuItems'] = $this->qdphoto_model->getAllMenuItems();
    $this->load->view($file, $data);    
}


public function loadCategoryPage($file, $category='Book 1') {
    $data['tabPhotos'] = $this->qdphoto_model->getAllPicturesByCategory($category, 'url, model');

    $this->load->view($file, $data);        
}

1 Ответ

0 голосов
/ 26 ноября 2011

Я правильно читаю? если $ tabPhotos НЕ является массивом ИЛИ это так, и он оказывается ПУСТОЙ, тогда верните ноль и продолжите выполнение цикла foreach с загадочным endif после?

        <?php if (!is_array($tabPhotos) || empty($tabPhotos)) :?>
            <?php return null; ?>

            <?php foreach ($tabPhotos as $item) : ?>
                <?php echo "Model: " . $item->url; ?>                   
            <?php endforeach; ?>
        <?php endif; ?>

Разве это не должно читаться так:

       <?php if (is_array($tabPhotos) && !empty($tabPhotos)) :?>
            <?php foreach ($tabPhotos as $item) : ?>
                <?php echo "Model: " . $item->url; ?>                   
            <?php endforeach; ?>
        <?php endif; ?>

нет необходимости в этом возвращаемом пустом операторе.

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

$string = $this->load->view($file, $data, true);

Обратите внимание, что вы должны рассмотреть это: http://codeigniter.com/user_guide/general/views.html

Смотри внизу. В нем говорится, как вернуть в виде строки, за исключением того, что я привык к немного другому синтаксису благодаря пользовательским контроллерам и тому подобному. Возможно, этот пример, который я привел, не является точным.

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