嗯,这是我改进模板函数功能的尝试:
class MY_Loader extends CI_Loader {
public function template($template_name = array(), $vars = array(), $return = FALSE)
{
$content = $this->view('templates/header', $vars, $return);
if (is_array($template_name)) {
foreach ($template_name as $view => $viewVar) {
// Whether the view has different variables
if (is_array($var) && ! is_numeric($view)) {
// Load the view with its own variables
$content .= $this->view($temp, $viewVar, $return);
} else {
// Load the view whith the general variables $vars
// viewVar would be the view name in this case
$content .= $this->view($viewVar, $vars, $return);
}
}
} else {
$content .= $this->view($template_name, $vars, $return);
}
$content .= $this->view('templates/footer', $vars, $return);
if ($return)
{
return $content;
}
}
}
使用它,您可以按以下格式加载视图:
$this->load->template(array(
'first/view' => array('name' => 'value'),
'second/view',
'third/view'
), $generalData);
每个视图都可以有自己的变量。
在这种情况下,第一个视图是通过将array('name' => 'value') 作为其变量来加载的。并且第二/第三个视图加载了$generalData作为变量。
如果您需要在第一个视图中访问$generalData,您可以使用+ 运算符将变量合并为:array('name' => 'value') + $generalData,反之亦然。