而是一个基本问题,尽管我对架构有点困惑。
我正在使用 Yii 框架编写一个网站。
有一个 SiteController 和 AdminController(不是我建造的)。
所有站点管理都在 AdminController 中,用户交互在 SiteController 中。
我知道这是不正确的,因为它不是基于模型的。
现在,我想实现用户注册。用户可以注册,管理员可以更改他的属性。
在现有控制器中构建 UserController 或管理上述所有内容更好(不破坏以前的逻辑)?
而是一个基本问题,尽管我对架构有点困惑。
我正在使用 Yii 框架编写一个网站。
有一个 SiteController 和 AdminController(不是我建造的)。
所有站点管理都在 AdminController 中,用户交互在 SiteController 中。
我知道这是不正确的,因为它不是基于模型的。
现在,我想实现用户注册。用户可以注册,管理员可以更改他的属性。
在现有控制器中构建 UserController 或管理上述所有内容更好(不破坏以前的逻辑)?
处理身份验证/注册/删除。为所有其他控制器首先检查的登录设置会话变量。
function register(){
}
function logout(){
}
function edit(){
}
function login(){
}
处理所有管理任务
处理所有用户任务。也许编辑个人资料,或发布到个人博客?
处理所有面向公众的任务,显示非基于身份验证的页面等。
我在我的 CI 项目中使用这种方法。这些信息会因 Yii 框架而异,但它可以让您了解正确的 MVC 设置。
我有核心控制器,例如:
application/core/FRONT_Controller.php
这个控制器扩展了 CI_Controller 并处理了我面向 pub 的页面的所有设置。我所有面向公众的控制器都扩展了 FRONT_Controller 而不是 CI_Controller。
application/core/USER_Controller.php
这个控制器处理我所有的用户身份验证。
application/core/ADMIN_Controller.php
此控制器进行初步检查,我所有基于管理员的控制器再次扩展此控制器,因此身份验证立即启动...... IE:
if (!$this->tank_auth->is_logged_in()){
redirect(site_url('/user/login/'));
}else{
$this->data['user'] = array(
'user_id' => $this->tank_auth->get_user_id(),
'username' => $this->tank_auth->get_username(),
'emailAddress' => $this->tank_auth->get_email(),
'firstname' => $this->tank_auth->get_firstname(),
'lastname' => $this->tank_auth->get_lastname(),
'userlevel' => $this->tank_auth->get_userlevel(),
'avatar' => $this->tank_auth->get_avatar(),
'last_login' => $this->tank_auth->get_last_login()
);
}
application/controllers/blog.php:
class Categories extends ADMIN_Controller{
function __construct(){
parent::__construct();
} #end constructor function
用户详细信息将存储在一个表中,即 tbl_users。为这些用户和相关控制器创建模型是使用 Yii 的正确方法。
您将拥有一个带有验证规则的模型user.php,以及指向 dbtable 的链接
您将拥有一个控制器UserController.php,其中包含与此模型相关的所有操作和相关访问规则。
我通常使用的是 SiteController.php 中的 actionRegister()覆盖UserController,您可以将其用于管理目的或根本不使用。
所以你会有类似的东西:
yousite.com?r=site/register 或 yoursite.com/register/ 如果您使用 url 重写