Charles0429
Charles0429

Reputation: 1420

Trying to get property of non-object in Codeigniter?

My controller code just generate ten copies of the same data. And I put the data in an array of array.Controller Code Below:

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);

And I show the data generated by controller in the view page report_list, the code of report_list is

<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>

The question is where am wrong? why is there errors "Trying to get property of non-object"? I tried to print the data in the controller, it works quite well.

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

Upvotes: 0

Views: 272

Answers (3)

Nil&#39;z
Nil&#39;z

Reputation: 7475

You need to print the variables in the view file in array style like this:

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

Still you can always print the array to view the structure:

<?php echo "<pre>";print_r($posts);echo "</pre>";

Upvotes: 1

skparwal
skparwal

Reputation: 1084

Change all the variables $post->link to array $post['link']

$post->month
$post->day

every fields that are using in template.

Upvotes: 0

Kiren S
Kiren S

Reputation: 3097

My assumption is that

You are expecting $posts as array of objects. But in $posts in some loaction there is no object with property month, day etc. So just before the for loop you should look the type of $posts by

var_dump($posts)

This will give you the clear picture about your error

Upvotes: 0

Related Questions