1

ここから update 2 メソッドでモジュールベースのログインを実装し まし たが、うまく機能します。ここで、このモジュールに別のロールとしてアクセスする必要があります。ここで説明するように、このモジュールへのユーザーレベルのアクセスを実装します

LevelLookUp クラスを EWebUser に追加します。今すぐログインしようとすると CException

「CWebUser とその動作には、「isAdmin」という名前のメソッドまたはクロージャがありません。」

表示されます。これは、モジュールがまだ CWebUser を使用していることを意味しますが、独自の EWebUser を作成し、それを module/components/EWebUser.php に配置し、モジュール構成ファイルの init メソッドにコードを記述します

$this->setImport(array(
    'bgadmin.models.*',
    'bgadmin.components.*',
));

$this->setComponents(
    array(
        'errorHandler' => array(
            'errorAction' => 'bgadmin/default/error'),
        'user' => array(
            //'class' => 'CWebUser',
            'class' => 'EWebUser',
            'loginUrl' => Yii::app()->createUrl('bgadmin/default/index'),
        )
));

問題 - 1. LevelLookUp クラスを配置する場所 2. モジュールがまだ EWebUser ではなく CWebuser を使用しているのはなぜですか?

再試行------------ 変更するとき

$this->setComponents(

Yii::app()->setComponents(

次に、EwebUserにアクセスしますが、ログインしたときにloginurlにはアクセスしませんが、現在2つの問題1.'expression'=>'Yii::app()->user->isAdmin()'動作しませんが、クラスEwebUserではflaseを返します。2.ログアウト時に「Property "BgadminModule.user" is not defined.」というエラーが表示されます。ログアウトコードは

Yii::app()->user->logout(false);
        $this->redirect(Yii::app()->getModule('bgadmin')->user->loginUrl);

以前の場合、ログアウトは正常に機能していました。私を助けてください 。

4

1 に答える 1

0

モジュールで$this->setComponents()を呼び出すと、実際にはモジュールの新しいコンポーネントが設定されるため、モジュールのユーザー コンポーネントにアクセスするには、次のステートメントを記述する必要があります。

Yii::app()->getModule('bgadmin')->user->isAdmin()または Yii::app()->getModule('bgadmin')->user->id

管理モジュールでログアウトするには、この方法で呼び出します

Yii::app()->user->logout(false); $this->setComponents() メソッド を使用している場合、これは正常に機能します。

'class' => 'EWebUser' がクラスを呼び出さない場合は、次のようにパスを変更してみてください

'class' => 'application.modules.bgadmin.components.EWebUser',

これは bgadmin モジュールで機能するはずです

于 2013-09-17T09:11:07.940 に答える