我正在使用Codeigniter框架开发Web应用程序。 我的应用程序具有固定的页眉和页脚。当用户转到可供他使用的各种页面并使页眉和页脚保持不变时,我想加载应用程序的中间部分(即主体)。

(hackerrank.com ...我当时谈论的是与此网站类似的网站... 登录该网站后...该网站的标题和侧边栏保持不变,并且它们加载了其余页面...我们如何实现它使用CI框架)

有什么方法可以实现这一目标?

我正在执行以下操作,这使我可以加载整个网站(就像重新加载整个页面:/)

如您所见,我的template.php中包含以下代码

<?php 

        $this->load->view("templates/header.php");

        $this->load->view($main_body);  

        $this->load->view("templates/footer.php");
?>

和我的控制器,我通常写下面的代码

   public function load_page(){

            $data['main_body'] = 'dashboard_pages/dashboard_view';

            $this->load->view('template.php',$data);
     }

===============>>#1 票数:1 已采纳

您已经非常接近解决方案:按原样加载页眉和页脚,变量:

<?php 
        $this->load->view($header);    
        $this->load->view($main_body);      
        $this->load->view($footer);
?>

棘手的事情是,您总是在编写的每个控制器中都编写方法函数load_page(),最好有一个MY_controller,它是控制器类之前的类,您将在其中编写脚注参考:

在此处检查是否编写了MY_Controller: http ://ellislab.com/codeigniter/user-guide/general/core_classes.html

然后,编写您的MY_Controller:

class MY_Controller extends CI_Controller {

    function __construct()
    {
        parent::__construct();
    }

    public function load_page( $page )
    {            
        $data['main_body'] = $page;

        // Logic for your header or footer deppending on logging or whatever...
        if ( 1 ==1 ) {
            $data['header'] = "templates/header.php";
            $data['footer'] = "templates/footer.php";
        }

        $this->load->view('template.php',$data);
    }
}

并且必须确保您的控制器扩展了MY_Controller类,并添加了一个load_page方法,您将向该方法传递参数:

class Custom_page extends MY_Controller {

    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
        $this->load_page( 'dashboard_pages/dashboard_view' );
    }
}

我认为,您将完全拥有所需的内容,因此只需要在一个位置编写页眉和页脚的逻辑即可:在MY_Controller中,并在任何部分使用它。

  ask by Hacker Rocker translate from so

未解决问题?本站智能推荐:

1回复

通过jQuery在页面中加载内容-Codeigniter

我有两个视图main.php和details.php。 在main.php中 ,有很多内容,并且在每个内容下都有一个“ 查看更多 ”按钮。 如果有人点击查看更多 ,则ajax调用将动态地从details.php加载其余内容,这将从数据库中获取内容ID的数据。 这是details.php中的
1回复

AJAX无法在Codeigniter中加载同一DIV中的页面

我正在尝试在codeigniter中开发简单的CMS。在主视图中,有几个指向其他页面的链接,但我希望所有页面在指定DIV内的同一视图中打开,而不必为每个页面加载(AJAX LOADING)。 我尝试使用AJAX调用来实现此目的,但很累找出它为什么对我不起作用。 每当我单击链接时,都只需从作为
1回复

AJAX第一次在Codeigniter中加载页面时不起作用

网页具有用于用户注册的表格,该表格包含四个字段:用户名,密码,确认密码和电子邮件。 使用AJAX实现了“用户名”和“电子邮件”字段,以便为新用户选择唯一的用户名和电子邮件,现在的问题是,当网页首次在浏览器中加载时,用于用户名和电子邮件的AJAX无效,一旦您提交了表单,整个系统将开始工作正常。
1回复

如何在不使用Codeigniter重新加载页面的情况下提交表单

这是我与代码点火器一起使用的表单代码 我正在使用此表单,我想提交from而不重新加载我尝试使用ajax代码的页面,但是它没有任何建议吗? 我评论了form_open行 然后用ajax尝试了一下,但是没有用 我的控制器
1回复

如何在Codeigniter中加载任何partuclar视图页面之前调用ajax函数

我在下面有一个查看页面,该页面会自动检测当前用户的时区,并在检测到时区后,将其发送到另一个页面,以在会话中设置时区以供进一步使用。 这是文件(autodetect.php) ,为了执行此功能,我必须先加载/阅读此页面(autodetect.php), 所以我的问题是“我如何
2回复

CODEIGNITER:模态表单在不加载页面的情况下插入数据

我想创建一个Bootstrap模式,在该模式下,用户无需使用页面刷新即可填充借助jQuery AJAX插入数据库中的数据,但是我不知道该怎么做。 有人说我将使用ajax,但是我对如何在代码中使用ajax感到困惑。 我对ajax一无所知,所以请帮助我 视图: 控制器:
2回复

我有三个div,如何仅在特定的div中加载数据而不重新加载php-codeigniter中的整个页面?

我有三个div标签,单击链接后,我只想在第二个div中加载数据而不加载整个页面,我想将第一个和第三个div保持为静态,第二个div应该是动态的?
1回复

来自2个不同页面的Codeigniter 3多个Ajax

我迫切需要进行代码审查,但我不知道还有什么要问的。 首先,让我解释一下我在做什么:我有一个用户个人资料页面,该页面将显示用户评论。 用户可以喜欢,不喜欢或回复评论。 接下来,我将说明如何执行此操作:我有一个加载“配置文件”视图的“配置文件”控制器。 加载配置文件视图后,我将进行a
2回复

在ajax请求中加载视图并使json数据可用(Codeigniter)

我想要ajax请求加载视图以及使json数据可用于相同的加载视图。 在下面的ajax请求中,我正在请求letUsKnow方法加载视图,并且我希望json数据在相同的加载视图中可用。 我尝试了下面的代码,但它不起作用。 init(控制器) 可以从单个ajax请求获得此功能。
2回复

codeigniter jquery ajax加载视图页面

当我点击锚标签时我需要加载控制器功能并从模型中的调用函数获取数据并将其发送到view_content页面并显示数据 这是我的代码 视图 调节器 模型 view_content