飛天雞 发表于 2012-3-9 10:48:05

如何在view裏面調用另一個view的controller文件

本帖最后由 飛天雞 于 2012-3-9 16:48 编辑

本人CI 新手現正在 用CI 重新改裝我的一個 項目。   在一個主頁文件裏面想載入topfoot等等文件。主頁index的controller為:indexcontroller.php對應的 view 為index.php
現在有top foot等側邊欄文件 要引入 ,他們的controller為side.php 對應的view為 top.php、foot.php。
要把 top foot側邊欄放在主頁文件裏面一起出現。

如果在view的 index.php 文件內用 require 直接引入top文件的話,只會執行到view 沒有從controller找到對應的數據。

如果是 用redirect()的話就會 直接跳轉到對應的頁面
如果是用
<?php
Indexcontroller extends CI_controller{
function index(){
    $this->load->view('top');
    $this->load->view('foot');
    $this->load->view('personal_left');
    $this->load->view(index);
}
}
?>
只會顯示到index.php 這個view文件 其他的 view都沒有引入成功.   
所以總的來說
引入成功但沒有執行相應的controller.一個view文件沒有能執行到 另一個view 文件的controller。 我想應該是要用jq的
ajax的方法來解決這個問題的 但是不知道怎麼把整個頁面都更新到。我可以拿到 整個頁面的數據回來 但不會從先貼
到相應的位置。

請各位高手指導,謝謝

lynn.wang 发表于 2012-3-9 11:42:55

你可以先只 top
看看会出来不
如果分别 top foot personal_left 都分别可以出来的话
应该就是 index 的问题了

自然 发表于 2012-3-9 11:49:39

我明白lz 的意思,我也想要到一个好的答案。    我知道2个方法可以处理

frameset

第二个就是把你top 和left左边的数据放配置文件里面默认加载   view就有值了

飛天雞 发表于 2012-3-9 15:04:51

top 等是可以分別出來的但導入到 Index裏面就出現問題了。 不可以一起,否則會出現如文中的情況。
默認加載的方法不好。 因為有些頁面需要 有些頁面不需要。 放在config裏面 可以暫時解決 但其他頁面再遇到的時候 又要再用config.

飛天雞 发表于 2012-3-9 16:42:46

問題已經解決和大家分享一下
分2步 1 ajax請求 在Index.phpview文件裏面寫入 如下代碼:

<script>
        function a(){
                $.ajax({
                url: 'side/personal_left',   //接收页面
                type: 'POST',      //POST方式发送数据
                async: true,      //ajax同步
                success: function(msg) {
                       //alert(msg);
                                 $("#loginpage").append(msg);
                }
              });
              }
              a();
        </script>
2新建一個div裝載 此AJAX返回的頁面div命名為<div id="loginpage" class="loginpage">

這樣就可以方便地更新其他controller的內容到你想要的頁面。怎麼更新都可以 ,如果要替換當前頁面可以用   $("#loginpage").html(msg);   替代

自然 发表于 2012-3-14 15:19:41

~~你这方法还没用frameset 个好

sumuu 发表于 2012-3-14 17:16:05

我一般是这样写的<?php $this->load->view('admin/public/head.html')?>

飛天雞 发表于 2012-3-19 15:47:37

這樣寫的話 只會顯示到 3個邊頁。沒有實現嵌套在 INDEX裏面。後來我朋友告訴我 如果同時寫多個
$this->load->view('');的話 是順序執行的。如果執行到有/html結尾的文件 就結束了。沒有再加載下面的文件
页: [1]
查看完整版本: 如何在view裏面調用另一個view的controller文件