我正在尝试找到最好的方法,只需加载我的视图一次,然后在不同的页面上重复使用它们。
例如,对于主页,我有以下代码:
function index()
{
/* Load Includes for all pages */
$header = $this->load->view('includes/header','',true);
$scripts = $this->load->view('includes/scripts','',true);
$navigation = $this->load->view('includes/navigation','',true);
$footer = $this->load->view('includes/footer','',true);
/* Load widgets for Home Page*/
$rotator = $this->load->view('widgets/home_feature','',true);
$login = $this->load->view('widgets/login','',true);
$cal = $this->load->view('widgets/calendar_home','',true);
$gallery = $this->load->view('widgets/photos_scroll','',true);
$tags = $this->load->view('widgets/tags_view','',true);
$spotlight = $this->load->view('widgets/spotlight','',true);
$recent = $this->load->view('widgets/activityfeed','',true);
$data=array(
'title'=>'Philly2Night.com',
'MetaDesc'=>'Cities2Night new social network',
'MetaKeywords'=>'Social, Party, Plan, Events',
//Load Includes
'header'=>$header,
'scripts'=>$scripts,
'navigation'=>$navigation,
'footer'=>$footer,
//Load Widgets
'feature'=>$rotator,
'login'=>$login,
'calendar'=>$cal,
'photos'=>$gallery,
'tags'=>$tags,
'spotlight'=>$spotlight,
'recent'=>$recent
);
$this->load->vars($data);
$this->load->view('pages/home_view');
}
如何创建新网页,但引用这些视图?我尝试使var全局,理想情况下我想使用switch,并定义案例,但唉也没有用。
答案 0 :(得分:1)
首先,你不应该加载这么多页面。每个文件系统请求都会影响性能。而不是有“标题”和“页脚”只是将它们组合到“home_view”页面。
其次,您的问题听起来像是在说明加载视图后,您希望它们在之后的每个页面请求中保持加载状态。这是不可能的PHP,因为每个请求都是一个全新的负载。但是,如果您正在进行大量数据库查询或计算,然后加载小部件,则可以将小部件缓存5分钟左右,并在每个页面中保存查询。在CodeIgniter论坛中查找缓存类。
答案 1 :(得分:1)
如果我理解正确,我认为您只想为所有加载代码设置一个共同位置,这样您就不必为控制器中的每个操作复制/粘贴该部分。如果是这样的话......
在控制器中创建一个构造函数,将load->view
移到那里,然后将它们存储到类中的变量中:
function __construct() {
parent::__construct();
/* Load Includes for all pages */
$this->header = $this->load->view('includes/header','',true);
$this->scripts = $this->load->view('includes/scripts','',true);
$this->navigation = $this->load->view('includes/navigation','',true);
$this->footer = $this->load->view('includes/footer','',true);
}
请务必将$ header,$ script等引用更改为$ this-> header,$ this-> scripts等。
另外,如果您使用的是PHP4,请将__construct
替换为您的班级名称。
答案 2 :(得分:0)
这可能会或可能没有用处: http://codeigniter.com/forums/viewthread/77279/
我在我的所有CodeIgniter项目中使用它,它使模板非常容易。