CodeIgniter 中的页眉和页脚
2022-08-30 08:45:15
我真的不喜欢在每个控制器中写作:
$this->load->view('templates/header');
$this->load->view('body');
$this->load->view('templates/footer');
有没有可能,页眉和页脚会自动包含在内,如果我们需要更改它,我们也可以这样做?你是如何处理的?或者在你看来这不是问题?谢谢。
我真的不喜欢在每个控制器中写作:
$this->load->view('templates/header');
$this->load->view('body');
$this->load->view('templates/footer');
有没有可能,页眉和页脚会自动包含在内,如果我们需要更改它,我们也可以这样做?你是如何处理的?或者在你看来这不是问题?谢谢。
以下是我的工作:
<?php
/**
* /application/core/MY_Loader.php
*
*/
class MY_Loader extends CI_Loader {
public function template($template_name, $vars = array(), $return = FALSE)
{
$content = $this->view('templates/header', $vars, $return);
$content .= $this->view($template_name, $vars, $return);
$content .= $this->view('templates/footer', $vars, $return);
if ($return)
{
return $content;
}
}
}
对于 CI 3.x:
class MY_Loader extends CI_Loader {
public function template($template_name, $vars = array(), $return = FALSE)
{
if($return):
$content = $this->view('templates/header', $vars, $return);
$content .= $this->view($template_name, $vars, $return);
$content .= $this->view('templates/footer', $vars, $return);
return $content;
else:
$this->view('templates/header', $vars);
$this->view($template_name, $vars);
$this->view('templates/footer', $vars);
endif;
}
}
然后,在您的控制器中,您只需执行以下操作:
<?php
$this->load->template('body');
是的。
创建一个在文件夹中调用的文件。template.phpviews
内容:template.php
$this->load->view('templates/header');
$this->load->view($v);
$this->load->view('templates/footer');
然后,从控制器中,您可以执行如下操作:
$d['v'] = 'body';
$this->load->view('template', $d);
这实际上是我个人如何加载我所有观点的非常简单的版本。如果你把这个想法发挥到极致,你可以做一些有趣的模块化布局:
请考虑是否创建一个名为包含单行的视图:init.php
$this->load->view('html');
现在创建包含以下内容的视图:html.php
<!DOCTYPE html>
<html lang="en">
<? $this->load->view('head'); ?>
<? $this->load->view('body'); ?>
</html>
现在创建一个包含以下内容的视图:head.php
<head>
<title><?= $title;?></title>
<base href="<?= site_url();?>">
<link rel="shortcut icon" href='favicon.ico'>
<script type='text/javascript'>//Put global scripts here...</script>
<!-- ETC ETC... DO A BUNCH OF OTHER <HEAD> STUFF... -->
</head>
以及包含以下内容的视图:body.php
<body>
<div id="mainWrap">
<? $this->load->view('header'); ?>
<? //FINALLY LOAD THE VIEW!!! ?>
<? $this->load->view($v); ?>
<? $this->load->view('footer'); ?>
</div>
</body>
并根据需要创建和查看。header.phpfooter.php
现在,当您从控制器调用init时,所有繁重的工作都已完成,您的视图将被包裹在里面和标签中,您的页眉和页脚将被加载进去。<html><body>
$d['v'] = 'fooview'
$this->load->view('init', $d);