-1

我在一个站点上工作,在该站点的右侧,我正在显示一些固定类型的动态内容,例如,event calendar等。右侧栏名称是 所以首先我这样做是在控制器的每个功能中发送参数,然后在我的观点我通过像这样调用右视图来访问右侧参数loginregisterright_view.php

 <?php $this->load->view('right_view');?>

然后登录后我可以获得存储在会话中的用户名。之后,我认为在每个函数中发送参数不是一个好方法,我只是创建了一个名为的控制器right.php,在这个控制器中,我将参数传递给right_view.php,然后在我的视图中,我像这样更改了 callig righr_view 的代码

<?php include(base_url().'right');?>

它像我在上面所做的那样显示正确的内容,但是发生了一个变化,即我无法访问右侧栏中的任何会话存储变量。在视图中包含控制器后会话是否不起作用?

4

1 回答 1

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 语句,表示如果登录则显示 x,如果不显示登录表单。

注意 - additionalHeadInfo 变量是这样我可以在单个页面上包含 jQueryUI 或其他内容,而无需将其加载到不需要它的页面上。

于 2013-08-05T13:21:14.197 回答