加载具有多个控制器的视图

时间:2012-08-27 04:28:30

标签: php codeigniter templates

我正在使用Codeigniter:我有两个控制器。他们使用不同的模型。他们没有任何共同之处。控制器1是一个登录控制器,如果我的登录凭据正确,它会将我引导到安全页面。我只想让Controller 2:只加载这个页面的中间部分,就是这样。为什么CI很难做到这一点?

+-------------------------------------------------------+
|View "Home_Page"                                       |
+--------------------------------------------------------
| TOP:                                                  |
|Controller 1: function checklogin(){} loads this part  |
|                                                       |
--------------------------------------------------------+
|Middle:                                                |                                  
|Controller 2: function content(){ } loads this part    |
|                                                       |
--------------------------------------------------------+
|Bottom:                                                |                                  
|Controller 1: function checklogin(){} loads this part  |
|                                                       |
--------------------------------------------------------+

3 个答案:

答案 0 :(得分:2)

回答你的问题。

因为CI不是为了做这种事而开发的吗?

不是MVC的东西?控制器不调用控制器,模型不调用控制器,视图不调用控制器,控制器调用所需的一切,只调用控制器的是路径。

如果您想要了解类似的功能,请阅读HMVC / Modular separation

无论如何,这是不好的做法,考虑将你的代码重组为MVC并停止尝试让CodeIgniter做它本不该做的事情。

Things to read about MVC and what models are for.

控制器1

public function index() {
    $this->load->view("header");
    $this->load->view("top");
    $this->load->view("middle");
    $this->load->view("bottom");
}

控制器2

public function index() {
    $this->load->view("header");
    $this->load->view("middle");
}

答案 1 :(得分:0)

我认为你需要母版页

参考this

答案 2 :(得分:0)

有几个auth库可以正常工作,但它们不能以这种方式运行。

通常,CI中的流程为:

Request -> Front Controller 
-> Route
-> Controller
[-> Auth Library 
    [-> Auth Model]
] 
-> Display View

括号表示可选组件。

控制器将运行身份验证代码,无论是库中的控制器还是其他方法,然后根据结果显示视图或重定向用户。

我个人使用Tank Auth,但还有很多其他的可用作身份验证库。