0

フローは次のとおりです。

  1. ユーザーがテキストベースの投稿を作成します。

  2. ユーザーがテキストベースの投稿を編集します(投稿情報を含む編集ページが表示されます)

  3. ユーザーが投稿に変更を送信します(投稿管理者に送信されたリクエスト)

ここで、複数のタイプの投稿がある場合、ステップ2と3で、ユーザーが実際に正しいタイプの投稿を更新していることを確認する必要があります。これは、タイプAの投稿が実際にタイプである場合に、誰かがURLを変更して編集できるためです。 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
}

これは、各関数の最初に、または__construct()完全に乾かしたい場合は に配置する必要があります。

幸運を。

于 2012-06-03T18:38:47.827 に答える