Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用CodeIgniter的Ajax内容区?_Php_Codeigniter_Jquery - Fatal编程技术网

Php 使用CodeIgniter的Ajax内容区?

Php 使用CodeIgniter的Ajax内容区?,php,codeigniter,jquery,Php,Codeigniter,Jquery,我最近开始使用CodeIgniter重新开发一个应用程序,我正在尝试将我的模板实现到系统中 我面临着一个我还看不到解决办法的问题 基本上,在控制器内,我正在做的一个例子是: /* * Load view for header */ $this->load->view('header_view'); /* * Load view for navigation */ $this->load->view(

我最近开始使用CodeIgniter重新开发一个应用程序,我正在尝试将我的模板实现到系统中

我面临着一个我还看不到解决办法的问题

基本上,在控制器内,我正在做的一个例子是:

    /*
     * Load view for header
     */
    $this->load->view('header_view');

    /*
     * Load view for navigation
     */
    $this->load->view('navigation_view');

    /*
     * Load view for content
     */
    $this->load->view('content_view');

    /*
     * Load view for footer
     */
    $this->load->view('footer_view');
然而,我面临的问题是,内容区域中动态加载了页面

因此,导航区链接不会打开HREF URL,但会通过ajax将页面数据加载到content div中

我需要能够通过URL(如“”)直接访问我的控制器,目前还可以

但是,导航会将链接加载到内容区域,其中还包括页眉/导航/页脚,因此我最终会在内容区域中使用嵌套布局

解决这个问题的简单方法是“不要在每个页面中都包含页眉/导航/页脚视图”,但是您不能直接转到上面这样的URL,它只有在加载到内容区域时才能工作,因为它需要页眉、导航和页脚

理想情况下,我需要的解决方案是始终在任何控制器周围加载页眉/导航/页脚,这样,如果我通过URL转到控制器/方法,我不必在控制器中加载页眉/导航/页脚,但它会自动在控制器周围加载


如果您有任何想法,请欣赏,谢谢

为什么不使用MY\u控制器扩展CI控制器,那么您的所有控制器都将扩展MY\u控制器。在my_中,控制器具有如下功能:

public function loadView($file, $data=array()){
    $this->load->view('header', $data);
    $this->load->view($file, $data);
    $this->load->view('footer', $data);
}
然后,从控制器的操作中,只需调用它:

public function index(){
    // code code code
    $this->loadView('welcome', array('message'=>'Hello!')); 
}

我想你明白了。在ajax中,你可以使用如下视图:

<div id="header"></div>
<div> //here all your stuffs</div>
</div id="footer"></div>

//这是你所有的东西
那么就:

<script>
$(function(){
$('#footer').load('my_footer_view_url');
$('#header').load('my_header_view_url');
});
</script>

$(函数(){
$('页脚').load('我的页脚\视图\ url');
$('.'标题').load('我的标题\视图\ url');
});
这是一个糟糕的示例,您可以定义一个为视图提供服务的
php方法和一个将视图加载到div中的
js方法,因此每个视图必须只有一个
用于加载部分

重要


如果您可以使用Ajax,这个解决方案非常好,因为一旦您将#footer div移动到视图中的其他位置,您就会移动一个enteer footer视图(例如,php将更加静态),但我很遗憾,这取决于您是否可以使用Ajax;)

这就导致了同样的问题。例如,我有一个名为control1的控制器,它调用一个名为view1的视图,该视图随后位于我的_控制器加载的页眉/页脚之间。如果我转到mywebsite.co.uk/control1,它将在我的_控制器中加载页眉和页脚,并在control1中加载视图1。但是,假设有一个导航链接动态地将mywebsite.co.uk/control2(它还扩展了MY_控制器)加载到内容区域,则MY_控制器也会将页眉和页脚加载到内容区域。这有意义吗?