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


Loading a view with multiple controllers

我正在使用Codeigniter:我有两个控制器。他们使用不同的型号。他们没有任何共同点。控制器1是一个登录控制器,如果我的登录凭据正确,它会将我引导到一个安全页面。我只是想让控制器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  |
|                                                       |
--------------------------------------------------------+

回答您的问题。

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

不是MVC的东西?控制器不调用控制器,模型不调用控制器、视图不调用控制器。控制器调用他们想要的一切,唯一调用控制器的是路由。

如果您想要类似的功能,请阅读HMVC/模块化分离。

无论如何,这都是一种糟糕的做法,请考虑将代码重组为MVC,并停止尝试让CodeIgniter做它不应该做的事情

关于MVC和模型的阅读内容。

控制器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");
}

我想你需要主页,

请参阅此

有几个身份验证库运行得很好,但它们不是这样操作的。

CI中的流量通常为:

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

支架用于指示可选组件。

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

我个人使用Tank Auth,但还有许多其他功能可以用作身份验证库。