obj =& get_instance();
$this->layout_view = "layout/default.php";
// Grab layout from called controller
if (isset($this->obj->layout_view)) $this->layout_view = $this->obj->layout_view;
}
function view($view, $data = null, $return = false) {
// Render template
$data['content_for_layout'] = $this->obj->load->view($view, $data, true);
$data['title_for_layout'] = $this->title;
// Render resources
$data['js_for_layout'] = '';
foreach ($this->js_list as $v)
$data['js_for_layout'] .= sprintf('', $v);
$data['css_for_layout'] = '';
foreach ($this->css_list as $v)
$data['css_for_layout'] .= sprintf('', $v);
// Render template
$this->block_replace = true;
$output = $this->obj->load->view($this->layout_view, $data, $return);
return $output;
}
/**
* Set page title
*
* @param $title
*/
function title($title) {
$this->title = $title;
}
/**
* Adds Javascript resource to current page
* @param $item
*/
function js($item) {
$this->js_list[] = $item;
}
/**
* Adds CSS resource to current page
* @param $item
*/
function css($item) {
$this->css_list[] = $item;
}
/**
* Twig like template inheritance
*
* @param string $name
*/
function block($name = '') {
if ($name != '') {
$this->block_new = $name;
ob_start();
} else {
if ($this->block_replace) {
// If block was overriden in template, replace it in layout
if (!empty($this->block_list[$this->block_new])) {
ob_end_clean();
echo $this->block_list[$this->block_new];
}
} else {
$this->block_list[$this->block_new] = ob_get_clean();
}
}
}
}