Php 一个控制器中的多个模型,codeigniter中的编码实践

Php 一个控制器中的多个模型,codeigniter中的编码实践,php,codeigniter,authentication,Php,Codeigniter,Authentication,我正在建立一个网站,我以前没有做过MVC,但我觉得我理解它(希望如此) 我有网站不同方面的控制器、模型和视图,就像register有自己的控制器、模型和视图一样 该网站在主页上有一个登录面板,在主页上有一个帐户管理面板 因此,通过索引控制器,我通过这个控制器加载了登录模型和accountManagement模型 我不知道还有什么其他方法可以做到这一点——不复制功能——因为这些都显示在主页上,这取决于用户是否有各种cookie 我想知道在这方面的编码实践(在一个控制器中加载多个模型),以及可能的建

我正在建立一个网站,我以前没有做过MVC,但我觉得我理解它(希望如此)

我有网站不同方面的控制器、模型和视图,就像register有自己的控制器、模型和视图一样

该网站在主页上有一个登录面板,在主页上有一个帐户管理面板

因此,通过索引控制器,我通过这个控制器加载了登录模型和accountManagement模型

我不知道还有什么其他方法可以做到这一点——不复制功能——因为这些都显示在主页上,这取决于用户是否有各种cookie

我想知道在这方面的编码实践(在一个控制器中加载多个模型),以及可能的建议,如果这是一个糟糕的实践


有关于“如何在一个控制器中加载两个模型”等的现有线程,但是,我的问题是关于这个的编码实践,我找不到一个关于这个的问题。

我相信这就是您想要的。Tank Auth是PHP框架的身份验证库。尽管代码经过了认真的修改,但它是基于

使用CodeIgniter进行配置很简单,并且其代码格式良好


您可以在这里学到很多东西。

将模型加载到控制器时,您可以执行以下操作:

function __construct(){
    parent::__construct();
    $this->load->model('user_model');
    $this->load->model('post_model');
}

function index(){

    $user_id = $this->session->userdata('id');

    $data['user_details'] = $this->user_model->get_user($user_id);
    $data['posts'] = $this->post_model->get_latest_posts();

    $this->load->view('homepage_view', $data);

}

希望这就是你要找的。如果不仅仅是评论,我会尝试帮助。

在控制器中加载多个模型没有问题。如果您需要控制器中所有方法中的模型,那么根据learn的帖子将其加载到构造函数中。如果一种方法中只需要模型,则可以将其加载到该方法中

在控制器中构建代码时,将其重构到模型中。这使得控制器中的代码变得抽象。换言之,控制器中的代码越不“特定”,需要更改的代码就越少

如果您正在进行登录,然后在每个页面上检查登录状态-最简单的方法是将该检查放入构造函数中,这样您就可以了解控制器中的所有方法。另一个建议是总是从登录检查中返回一些内容。您可以返回具有用户名、电子邮件等的对象或数组。因此,您不必检查控制器上的登录状态,而是检查登录检查方法是否返回了任何内容。这使它在添加功能时更加灵活

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

    $this->load->model( 'logingate' );
    $this->load->model( 'accountManagement' );

    if ( ! $this->admin = $this->logingate->returnAdmin() ) {
        redirect( '/login/', 'refresh' );       }

} // 
因此,$this->admin立即可用于控制器中的任何方法、称为模型的方法和任何称为视图的方法

echo 'Hello ' . $this->admin->name ; 

谢谢,这就是我要找的。