使用codeIgniter组织Web应用程序

时间:2013-01-15 16:35:04

标签: php html codeigniter web-applications web

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

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

我创建了3个模型:会员类别图书及其各自的控制器。

我用其控制器实现了Member模型。

在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?

最后,我没有得到的是不同的控制器如何在它们之间进行通信。

2 个答案:

答案 0 :(得分: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);

您遇到的问题是,如果您不希望用户以外的任何人看到自己的图书清单,您必须检查用户是否从您的图书管理员登录。 这就是为什么大多数用户auth脚本呈现为可以从任何控制器访问的库的原因。如果您的身份验证没有像这样布局,您可以将用户详细信息存储为会话数据并从那里检查,这将意味着您不必通过uri传递用户名。有关详细信息,请在此处查看会话文档:http://ellislab.com/codeigniter/user-guide/libraries/sessions.html

答案 1 :(得分:0)

我该怎么做?

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

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

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

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

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

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

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

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

我是否只需要从一个控制器(成员控制器)构建网站?

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

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

控制器代表您网站的一部分。该控制器将为不同的事物加载多个视图。这是一个great little tutorial解释MVC worklow。这有助于您了解该过程。