所以我有一个菜单,我想根据经过身份验证的用户的访问级别生成一个主菜单。创建菜单没问题,但我想在“标题”视图中自动创建生成的菜单。所以在我的控制器中我调用了“标题”视图,但我不想像这样传递标题的动态部分:
$data['menu'] = 'Some Generated HTML Menu';
$this->load->view('header',$data);
我希望它已经包含在我的头文件中,但我不确定如何做到这一点(除了从我的构造函数中添加$ data声明)。
答案 0 :(得分:0)
你可以让$ data ['menu'] =(button_name,url)的多维数组。然后在视图中将此数组传递给一个插件,该插件根据该数组生成html菜单。
答案 1 :(得分:0)
我不知道这是否会对你有所帮助,但这是我在模板系统上运行时间最长的方法,然后才采用更高级的方法。
Top Head :views / inc / top_head.php
<html>
<head>
<!-- all of your imports you want across all pages -->
底部头部:views / inc / bottom_head.php
我是这样做的,这样我就可以拆分和添加自定义Javascript的东西,也许会带来特殊情况下的导入。
</head>
<body>
<div id="main_container">
<div id="navigation">
<?php
// DO YOUR NAVIGATION MAGIC HERE
if($is_logged_in) :
// BAM MAGIC DONE
else :
// No magic show here
endif;
?>
</div>
页脚:views / inc / footer.php
这就是你要在页脚中添加东西的地方....
</div>
</body>
现在我们需要将内容实际填入模板
索引页:/views/some_controller/index.php
<?php $this->load->view('inc/top_head.php'); ?>
<?php $this->load->view('inc/bottom_head.php;) ?>
<h1>Hello</h1>
<p>Some filler content and stuff I guess would go here...Of course</p>
<?php $this->load->view('inc/footer.php'); ?>
所以,我们有一个快速的模板系统。现在向您展示我为控制器所做的工作
<?php
class Some_Controller extends Controller {
public $page_data;
public function __construct() {
parent::__construct(); // Load parent constructor
// This is page data that we obviously don't want to keep retyping
$this->page_data = array(
'is_logged_in' => FALSE, // Obviously do some test here
'page_title' => 'Some Title'
);
}
public function index() {
$this->_load('some_controller/index');
}
/** Should think of a better name but meh */
private function _load($view) {
$this->load->view($view, $this->page_data);
}
}
我希望这在某种程度上有所帮助。请注意,这是一个快速写作。如果我真的想要将它投入生产,我会将_load
函数移动到父类并扩展它。我也可能会随之移动page_data
变量。