Chat with us, powered by LiveChat

This website uses cookies

Our website, platform and/or any sub domains use cookies to understand how you use our services, and to improve both your experience and our marketing relevance.

How to Pass Data From Controller to View in CodeIgniter

August 5, 2019

3 Min Read
Reading Time: 3 minutes

A view is webpage that displays all the elements of the UI. In many cases, view is often a fragment of page (such as header, footer, widget areas and sidebars). In many cases, views can be embedded in other views. One important aspect of views is that views could not be called directly. You need to load the views through a controller. In this tutorial, I will highlight the simple, and yet very important process of how to pass data in CodeIgniter application deployed on any Web Hosting for PHP.

You might also like: How To Host CodeIgniter PHP On Cloud Using SSH

Create a View

Create a new text file and name it cwblogview.php. Save this file in application/views/ directory. Open the file and add the following code to it:

<html>
<head>
        <title>Blog</title>
</head>
<body>
        <h1>Welcome to Blog</h1>
</body>
</html>

Get 10x Faster Performance for Your PHP Applications

Optimize Your PHP Apps With Us & Get Faster Web Performance All The Time

Load the View

Loading a view is usually executed through the following syntax:

$this->load->view('name');

where ‘name’ is the name of the view

Noe create a controller with the name Blog.php.  This controller will contain the method for loading the view:

<?php
class Blog extends CI_Controller {

    public function index()
    {
        $this->load->view('cwblogview');
    }
}

Once you have created the controller, the URL for the view would be:

Your-domain.com/index.php/blog/

Pass array from controller to view

Here’s the controller code given below. You can paste it inside your controller file or could put in the controller object.

$data['mega_header'][] = (object) array('title' => 'portfolio image' ,

    'img' => 'https://complete path of image' );

$this->load->view('multiple_array', $data);

Here, objects are shown as an Arrow(->) and arrays as a Brick. You can access any object using the arrow (->) and an array with the Brick [‘..’]. 

So, add the following code in the view file:

<?php

        if (isset($mega_header)){

            foreach ($mega_header as $key) {

                ?>

                <div class="header_item">

                    <img alt="<?php echo($key['title']); ?>" src="<?php echo($key->img); ?>"/>

                </div>

                <?php

            }

        }

        ?>

Get Your PHP Deployment Ebook Now

Enter your email address below and get the download link.

Thank You

Your Ebook is on its Way to Your Inbox.

Load Multiple Views

Within a controller, CodeIgniter could handle multiple calls to the view ($this->load->view()). Check out the following code:

<?php
class Page extends CI_Controller {
    public function index()
    {
        $data['page_title'] = 'title';
        $this->load->view('header');
        $this->load->view('menu');
        $this->load->view('content', $data);
        $this->load->view('footer');
    }

}

Sort Views in Subfolders

It is easy to sort views within subfolders:

$this->load->view(‘directory_name/file_name’);

Add Dynamic Data to Views

The usual route of data transfer from controller to view is through an array or an object. The usual case is that the array or the object is passed as the second parameter of the view load method (something like the following):

$data = array(
    'title' => 'Title',
    'heading' => 'Heading',
    'message' => ' Message'
);

$this->load->view('cwblogview', $data);

The controller would look like this:

<?php
class Blog extends CI_Controller {

    public function index()
    {
        $data['title'] = "Title";
        $data['heading'] = "Heading";

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

This is what the the view file would look like:

<html>
<head>
    <title><?php echo $title;?></title>
</head>
<body>
<h1><?php echo $heading;?></h1>
</body>
</html>

Create the Loops

Notice that the data array that is passed to the view files could be both simple variables and multi-dimensional arrays. In the case of multi-dimensional arrays, you could setup loops to generate multiple rows. For this, add the following code in the controller:

<?php
class Blog extends CI_Controller
{
    public function index()
    {
        $data['todo_list'] = array('First Object', 'Second Object', 'Third Object');
        $data['title'] = "Title";
        $data['heading'] = "Heading";
        $this->load->view('cwblogview', $data);
    }
}

Next, open up the view file and create a loop:

<html>
<head>
    <title><?php echo $title;?></title>
</head>
<body>
<h1><?php echo $heading;?></h1>
<ul>
    <?php foreach ($todo_list as $item):?>

    <li><?php echo $item;?></li>

    <?php endforeach;?>
</ul>

</body>
</html>

Returning View as Data

The behavior of this method could be further customized through an optional third parameter. Using this parameter returns data as a string instead of sending it to the browser. This is important if you need to have a dataset for processing. Setting the third parameter to TRUE will return the data. The default behavior is FALSE that sends it to the browser.

Using the third parameter, the syntax would be:

$string = $this->load->view('fileview', '', TRUE);

You might also like: Pass Data From One Function To Another In Same Codeigniter Controller

Conclusion

In this tutorial I have discussed how to pass data from controller to view in CodeIgniter. The process is very simple and you could easily render views through the controller.

If you need help, you could add a comment below describing your issue. I will get back to you ASAP!

Share your opinion in the comment section. COMMENT NOW

Share This Article

Launch PHP websites without the worry of Server Management.

Pre-Installed Optimized Stack with Git, Composer & SSH

Owais Alam

is the WordPress Community Manager at Cloudways - A Managed WooCommerce Hosting Platform and a seasoned PHP developer. He loves to develop all sorts of websites on WordPress and is in love with WooCommerce in particular. You can email him at owais.alam@cloudways.com

Get Our Newsletter
Be the first to get the latest updates and tutorials.

Do you like what you read?

Get the Latest Updates

Share Your Feedback

Please insert Content

Thank you for your feedback!