【问题标题】:Codeigniter session does not work after including Controller in view将控制器包含在视图中后,Codeigniter 会话不起作用
【发布时间】:2013-08-05 12:44:42
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: php codeigniter session


    【解决方案1】:

    您基本上是想做一个模板系统,但是却以错误的方式去做。郑重声明,我不认为您可以(或至少不应该)将控制器加载到这样的视图中。

    你想要的是一个类似这样的模板文件:

    <?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 或其他内容,而无需将其加载到不需要它的页面上。

    【讨论】:

    • 我做的和你说的一模一样。我正在做模板系统,但让我感到不安的是,在右侧,我有一些动态内容正在发生变化,而一些内容在使用 ajax 文件一段时间后正在发生变化。所以如果我在每个函数中传递参数,就像你在欢迎函数中传递的那样,我无法访问右侧栏以正常工作
    • 可能是我的信息不明确,但基本上我面临一个非常奇怪的问题,我需要在短时间内处理
    • 加载页面后没有理由不能使用 AJAX 更改侧边栏的内容,我经常这样做。只需确保您的侧边栏设置了适当的选择器,以便从 jQuery(或纯 js)轻松访问内容。我不确定我是否看到了这个问题。
    • 在您查看我的代码之前,我无法向您解释清楚,或者您无法理解我的问题。有什么方法可以让您概览一下吗?
    猜你喜欢
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 2017-08-04
    • 2013-01-17
    • 2015-03-13
    • 2012-08-09
    • 2017-10-05
    • 2020-05-24
    相关资源
    最近更新 更多