我正在开设一个网站,其中右侧显示的是一些固定类型的动态内容,例如event calendar
,login
,register
等。右侧栏名称为 right_view.php
所以首先我这样做,我在控制器的每个功能中发送参数,然后在我的视图中,通过调用这样的右视图访问右侧参数
<?php $this->load->view('right_view');?>
然后登录后我可以获得存储在会话中的用户名。
之后我认为在每个函数中发送参数不是一个好方法我只是创建一个名为 right.php
的控制器,在这个控制器中我将参数传递给right_view.php
并在之后在我看来,我改变了我的callig righr_view代码,就像这个
<?php include(base_url().'right');?>
它显示正确的内容,如上所述,但发生了一个变化,我无法访问右侧栏中的任何会话存储变量。 在视图中包含控制器后会话是否无效?
答案 0 :(得分:0)
你基本上想要做一个模板系统但是以错误的方式去做。而且对于记录而言,我认为你不能(或者至少应该)将控制器加载到这样的视图中。
你想要的是一个类似这样的模板文件:
<?php
$this->load->view('templates/header', $title);
$this->load->view('templates/sidebar',$sidebar_content);
$this->load->view('pages/'.$main_content);
$this->load->view('templates/footer');
?>
调用template.php
然后在你的控制器中你会做这样的事情:
public function welcome()
{
$data['main_content'] = 'welcome';
$data['title']='Welcome to REfficient.com!';
$data['sidebar_content'] = 'sidebar/no_sidebar';
$data['additionalHeadInfo'] ='';
$this->load->view('templates/template',$data);
}
因此,如果您查看模板文件,第一行是加载标题并包含要插入页面的标题变量(标题,侧边栏,主要内容和页脚都是它们各自独立的PHP页面)等等。
现在我所做的(因为我的布局与你的布局非常相似)是我的主侧边栏文件有一个if语句,如果登录show x,如果没有显示登录表单。
注意 - additionalHeadInfo变量是这样的,我可以在单个页面上包含jQueryUI或其他内容,而无需将其加载到不需要它的页面上。