0

这是流程:

  1. 用户创建基于文本的帖子。

  2. 用户编辑基于文本的帖子(显示带有帖子信息的编辑页面)

  3. 用户提交对帖子的更改(发送到帖子控制器的请求)

现在,如果我有 MULTIPLE 类型的帖子,我必须在步骤 2 和 3 中检查用户确实在更新 RIGHT 类型的帖子,因为有人可以很好地更改 URL 以编辑 A 类型的帖子,而它真的是类型B.这会导致大量的冗余代码,比如...

if(user is indeed the editor && the post type is correct) show the edit page   

我认为拥有一个 EDIT 控制器来执行构造函数(或者可能是基类?)中所需的所有验证,然后调用该方法会很有意义。你有没有遇到过类似的问题——如果没有,这是否有任何设计意义?

4

1 回答 1

1

CodeIgniter 是一个 MVC。这意味着您的控制器充当模型(您的数据)和您的视图(前端)之间的中间体。“编辑”是您对对象(如数据)执行的操作。数据对象应该组织在一个控制器中,该控制器从模型中调用实际的编辑功能。

我假设你有一个 Post 控制器。它的核心应该是基本的 CRUD 功能,比如添加和编辑帖子。它应该看起来像这样:

class Post extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
        // List all posts, perhaps?
    }

    function add()
    {
        // Add a post
    }

    function edit($post_id)
    {
        // Edit a post
    }

    function view($post_id)
    {
        // View a post
    }

}

这将为您提供以下页面:

检查用户权限是它自己的章节。如果您使用的是Tank Auth之类的库,则可以像这样检查权限:

if ($this->tank_auth->is_logged_in()) {
    // Do stuff
}

That should go at the beginning of each function - or in the __construct(), if you want to DRY it up completely.

Good luck.

于 2012-06-03T18:38:47.827 回答