Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Codeigniter passing data from controller to view

As per here I've got the following controller:

class User extends CI_Controller {
    public function Login()
    {
        //$data->RedirectUrl = $this->input->get_post('ReturnTo');
        $data = array(
               'title' => 'My Title',
               'heading' => 'My Heading',
               'message' => 'My Message'
          );
        $this->load->view('User_Login', $data);
    }

    //More...
}

and in my User_Login.php view file I do this:

<?php print_r($data);?>

which results in:

A PHP Error was encountered
Severity: Notice
Message: Undefined variable: data
Filename: views/User_Login.php
Line Number: 1

Do I need to load any specific modules/helpers to get the $data variable populated? If I print_r($this), I can see a lot of stuff but none of my data except in caches

Edit: To clarify, I know that calling the variable the same in the controller and view won't "share" it - it's out of scope but in the example I linked, it seems to imply a $data variable is created in the scope of the view. I simply happened to use the same name in the controller

like image 957
Basic Avatar asked Jun 06 '11 20:06

Basic


3 Answers

Ah, the $data array's keys are converted into variables: try var_dump($title); for example.

EDIT: this is done using extract.

like image 103
Femi Avatar answered Oct 22 '22 19:10

Femi


you should do it like :

echo $title ;
echo $heading;
echo $message;
like image 6
Nishant Jani Avatar answered Oct 22 '22 19:10

Nishant Jani


Or you can use it like array. In Controller:

...
$this->load->view('User_Login', array('data' => $data));
...

In View:

<?php print_r($data);?>

will show you the Array ( [title] => My Title [heading] => My Heading [message] => My Message )

like image 4
Andriy Leshchuk Avatar answered Oct 22 '22 18:10

Andriy Leshchuk