我正在使用Codeigniter开发网站。结构网站很简单,我在模型中有动态菜单和内容检索DB。然后分配一个方法在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);
}
答案 0 :(得分:0)
我是否正确阅读?如果$ tabPhotos不是一个数组或它是,它恰好是EMPTY然后返回null并继续运行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; ?>
不需要返回null语句。
另外,我相信你可以将视图作为字符串返回。如果要加载多个视图,您当然可以将视图的任何片段加载为字符串...
$string = $this->load->view($file, $data, true);
请注意,您应该查看以下内容: http://codeigniter.com/user_guide/general/views.html
见底部。它说如何作为字符串返回,除了由于自定义控制器等我习惯于稍微不同的语法。也许我提供的这个例子并不准确。