0

我的控制器代码只生成十个相同数据的副本。我把数据放在array.Controller的数组中,代码如下:

for($i=0;$i < $this->per_page;$i++)
{
    $temp['title'] = "test";
    $temp['link'] = "localhost/cib/index.php";
    $temp['month'] = '4';
    $temp['day'] = '21';
    $temp['authorlink'] = "localhost/cib/index.php/author";
    $temp['author'] = "Charles";
    $temp['content'] = "tetestersafaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
    $results[] = $temp;
}

$data['main_content'] = 'report_list';
$data['posts'] = $results;

$this->load->view('include/templates', $data);

我在视图页面report_list中显示了控制器生成的数据,report_list的代码是

<div id="bg_top">
</div>
<div class = "container" id="content">
    <div class="row-fluid">
        <div class="span9" id="content_left">
        <h2>解题报告列表</h2>
        <link href="<?php echo base_url('assets/css/style.css') ?>" rel="stylesheet">
        <?php if(!empty($posts) && is_array($posts)):?>
            <?php foreach($posts as $post):?>
                <div class="entry">
                    <h2 class="entrytitle"><?php echo anchor($post->link, $post->title)?><span></span></h2>
                    <div class="entrymeta1"> 
                        <div class="meta-date">
                            <span class="meta-month"><?php echo $post->month?></span>
                            <span class="meta-day"><?php echo $post->day?></span>
                        </div>
                        <span class="meta-author"><?php echo anchor($post->authorlink, $post->author)?></span>
                        <span class="meta-category"></span>
                        <span class="meta-comment"></span>
                        <div class="clear"></div>
                        </div><!-- [entrymeta1] -->
                    <div class="entrybody">
                        <p><?php echo $post->content;?><?php echo anchor($post->link, '阅读全文')?></p>
                    </div>
                    <div class="entrymeta3">
                    </div>
                </div><!-- [entry] -->
        <?php endforeach;?>
    <?php endif;?>
        </div>
        <div class="span3">
        <?php echo "hello world2";?>
        </div>
    </div>
</div>

问题是哪里错了?为什么会出现“试图获取非对象的属性”的错误?我尝试在控制器中打印数据,效果很好。

foreach($results as $post)
{
    foreach($post as $key=>$value)
    {
        echo $key.':'.$value;
        echo '<br/>';
    }
}
4

3 回答 3

1

您需要以数组样式打印视图文件中的变量,如下所示:

<?php echo anchor($post['link'], $post['title'])?>

您仍然可以随时打印数组以查看结构:

<?php echo "<pre>";print_r($posts);echo "</pre>";
于 2013-06-27T05:55:42.323 回答
0

我的假设是

您期望 $posts 作为对象数组。但是在某些位置的 $posts 中没有具有属性月、日等的对象。因此,在 for 循环之前,您应该查看 $posts 的类型

var_dump($posts)

这将使您清楚地了解您的错误

于 2013-06-27T03:35:10.830 回答
0

将所有变量$post->link更改为数组$post['link']

$post->month
$post->day

模板中使用的每个字段。

于 2013-06-27T03:44:11.607 回答