Asked  7 Months ago    Answers:  5   Viewed   30 times

I'm starting a large codeigniter project and would like to try to create some reusable 'mini' views for snippets of content like loops of data which may be displayed on different pages/controllers.

Is it better to call the views from within the main controller's view? If so, how? Or should I call the 'mini view' from the controller and thus pass the view's code to the main view?

 Answers

29

Views within other views are called Nested views. There are two ways of including nested views in CodeIgniter:

1. Load a nested view inside the controller

Load the view in advance and pass to the other view. First put this in the controller:

<?php
// the "TRUE" argument tells it to return the content, rather than display it immediately
$data['menu'] = $this->load->view('menu', NULL, TRUE);
$this->load->view ('home', $data);
?>

Then put <?=$menu?> in your view at the point you want the menu to appear.

2. Load a view "from within" a view

First put this in the controller:

<?php
  $this->load->view('home');
?>

Then put this in the /application/views/home.php view:

<?php $this->view('menu'); ?>

<p>Other home content...</p>

About best method, I prefer the 1st method over 2nd one, because by using 1st method I don't have to mix up code, it is not like include php. Although indirectly both are same, the 1st method is clearer & cleaner than 2nd one!

Wednesday, March 31, 2021
 
BartmanEH
answered 7 Months ago
22

Rendering views in code igniter is done at the end. If you wish to render them as you go you can do

echo $this->load->view("first", array(), true);
echo "LOL";
echo $this->load->view("second", array(), true);
Saturday, May 29, 2021
 
dimitarvp
answered 5 Months ago
12
get_instance()->load->helper('HELPER_NAME');
Saturday, May 29, 2021
 
BartmanEH
answered 5 Months ago
68

Master pages and content pages do not share the same ViewState. If you are trying to pass something from the content page to the master page there are a couple of alternatives:
- use this.Context.Items that is common to the entire site during an HTTP request
- make a public property on the master page, cast this.Master from the content page to the master page class and set the property
- use Session

Friday, October 15, 2021
 
d.lebedev
answered 3 Days ago
74

You have forgotten the actual name for the Foo object. Try:

Foo foo = Foo().bar().baz();
Sunday, October 17, 2021
 
mertak
answered 1 Day ago
Only authorized users can answer the question. Please sign in first, or register a free account.
Not the answer you're looking for? Browse other questions tagged :