0

むしろ基本的な質問ですが、アーキテクチャについて少し混乱しています。
Yii フレームワークを使用して Web サイトをプログラミングしています。
SiteController と AdminController があります (私が作成したものではありません)。
すべてのサイト管理は AdminController にあり、ユーザー操作は SiteController にあります。
モデルベースではないため、正しくないことはわかっています。

ここで、ユーザー登録を実装したいと思います。ユーザーはサインアップでき、管理者は自分のプロパティを変更できます。
UserController をビルドするか、既存のコントローラーで上記のすべてを管理する方がよいでしょうか (以前のロジックを壊さないでください)。

4

2 に答える 2

4

MVC 標準では、関数グループごとにコントローラーを分割するのが最善です。

認証コントローラー

認証/登録/削除を処理します。他のすべてのコントローラーが最初にチェックするログインのセッション変数を設定します。

function register(){
}
function logout(){
}
function edit(){
}
function login(){
}

管理者コントローラー

すべての管理タスクを処理します

ユーザーコントローラー

すべてのユーザー タスクを処理します。プロフィールを編集したり、個人のブログに投稿したりしますか?

フロントコントローラー

公開されているすべてのタスクを処理し、非認証ベースのページなどを表示します。


無関係な CodeIgniter の例

私は自分の CI プロジェクトでこの方法論を使用しています。この情報は Yii フレームワークとは異なりますが、適切な MVC セットアップを垣間見ることができます。

次のようなコアコントローラーがあります。

application/core/FRONT_Controller.php このコントローラーは CI_Controller を拡張し、パブに面したページのすべての設定を処理します。私の一般向けコントローラーはすべて、CI_Controller の代わりに FRONT_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
于 2012-04-10T13:12:29.940 に答える
0

ユーザーの詳細はテーブル、つまり tbl_users に保存されます。これらのユーザーと相対コントローラー用のモデルを作成することは、Yii での正しいアプローチです。

検証ルール、dbtable へのリンクを含むモデルuser.phpが作成されます。

このモデルに関連するすべてのアクションと関連するアクセス ルールを備えたコントローラーUserController.phpが作成されます。

私が通常使用するのは、SiteController.phpの actionRegister() であり、管理目的で使用できるか、まったく使用しない UserController をオーバーライドします。

したがって、次のようなものになります。

yousite.com?r=site/register または yoursite.com/register/ (URL 書き換えを使用する場合)

于 2012-04-10T13:11:57.950 に答える