1

我对 CodeIgniter 的视图组织有疑问。

项目:创建一个允许管理图书馆(书柜)的简单 Web 应用程序。

我创建了 3 个模型:MemberCategoriesBooks以及它们各自的控制器。

我用它的控制器实现了成员模型。

在 member_controller 中,我们有:

public function login(){

$this->load->helper('form');
$this->load->helper('email');
$this->load->library('form_validation');

$mail = $this->input->post('mail');
$pass = $this->input->post('pass');

$data['mail'] = $mail;
$data['pass'] = $pass;


$this->form_validation->set_rules('mail', 'mail', 'required');
$this->form_validation->set_rules('pass', 'pass', 'required');

if ($this->form_validation->run() === TRUE)
{

$result=$this->membre_model->login($mail,$pass);

if($result==TRUE){

$this->load->view('templates/header.php');
$this->load->view('membre/logged',$data);
$this->load->view('templates/footer.php');


}

一旦用户登录,我想显示他之前创建的所有现有类别(所以从数据库中获取它们)。

  • 我怎样才能做到这一点?
  • 我必须在成员控制器的登录功能中调用类别控制器的功能吗?
  • 我必须从登录功能加载类别视图吗?
  • 我是否必须仅从一个控制器(成员控制器)构建站点?
  • 如何使用不同控制器的不同视图构建 webapp?

最后,我不明白的是不同的控制器如何在它们之间进行通信。

4

2 回答 2

0

您可以使用 URI 从另一个控制器调用一个控制器,例如,您的路由文件中可能有这样的条目:

$route['books/get_books_by_user/(:any)'] = "books/get_books_by_user/$1";

然后你可以调用你的登录控制器:

redirect('books/get_books_by_user/'.$user_id)

然后,您将在您的书籍控制器中的 get_books_by_user 方法中处理此问题。例如使用:

$user_id = $this->uri->segment(3);
$collection = $this->books_model->get_books_by_user($user_id);

您遇到的问题是,如果您不希望用户以外的任何人看到他们自己的图书列表,您必须检查用户是否从您的图书控制器登录。这就是为什么大多数用户身份验证脚本都显示为一个可以从任何控制器访问的库。如果您的身份验证不是这样布置的,您可以将用户详细信息存储为会话数据并从那里进行检查,这意味着您不必通过 uri 传递用户名。在此处查看会话文档以获取详细信息:http ://ellislab.com/codeigniter/user-guide/libraries/sessions.html

于 2013-01-15T16:57:08.853 回答
0

我怎样才能做到这一点?

在加载将根据用户的登录状态重定向用户的每个页面时,您必须添加一个异常。换句话说,如果用户已登录,则将他带到应用程序。如果用户不存在,将他重定向到注册页面。

这可以通过验证用户是否基于存储的会话值登录来完成。如果此会话已存储,则您可以让用户查看该页面。这是一个很棒的教程,解释了 Codeigniter 的简单登录系统。

http://www.codefactorycr.com/login-with-codeigniter-php.html

在我看来,我通常使用身份验证库来简化我的应用程序的登录系统。我会使用Ion Auth,它有一个很好的文档来解释你可以使用的所有功能。

我必须在成员控制器的登录功能中调用类别控制器的功能吗?

您可以像往常一样简单地使用类别控制器。您将根据存储在浏览器中的会话信息更改页面信息或将用户重定向出去。

我必须从登录功能加载类别视图吗?

您将从类别控制器加载类别视图。登录控制器会在用户登录后将用户重定向到类别控制器。

我是否必须仅从一个控制器(成员控制器)构建站点?

不,您可以拥有任意数量的控制器。

如何使用不同控制器的不同视图构建 webapp?

控制器将代表您网站的一部分。该控制器将为不同的事物加载多个视图。这是一个很棒的小教程,解释了 MVC 工作流。这将帮助您了解该过程。

于 2013-01-15T17:04:08.370 回答