0

ユーザーがログインしているかどうかを確認するための Auth プラグインを作成しました。ログインしていないユーザーは、ログイン ページ以外のアプリにアクセスできないはずです。

だから私はファイルにこれを持っていますapplication/modules/user/plugins/Auth.php:

class User_Plugin_Auth extends Zend_Controller_Plugin_Abstract {
    public function preDispatch(Zend_Controller_Request_Abstract $request) {
        if (Zend_Auth::getInstance()->hasIdentity() 
               || $this->getRequest()->getActionName() == 'login') return;
        $request->setModuleName('user');
        $request->setControllerName('auth');
        $request->setActionName('login');
    }
}

次に、これを次のように作成しましたapplication.ini

pluginPaths.User_Plugin = APPLICATION_PATH "/modules/user/plugins/"
resources.frontController.plugins[] = "User_Plugin_Auth"

ただし、ファイルをどのように移動してAuth.phpも、名前に関係なく、常にFatal error: Class 'User_Plugin_Auth' not found. 私を助けてください、私はこれに1時間以上無駄にしてしまい、イライラしています.

4

1 に答える 1

1

問題はファイル名に関係していると思います。これらの場所にファイルのコピーを作成してみます

application/modules/user/plugins/User_Plugin_Auth.php

application/modules/user/plugins/User/Plugin/Auth.php

当然、それらのうちの 1 つだけが必要なので、機能するものを見つけたら他のものを削除してください。

それが私の設定にある構文が役に立たない場合(Famはプロジェクトのコードネームです)

resources.frontController.plugins.layout = "Fam\Controller\Plugin\Layout"
resources.frontController.plugins.route = "Fam\Controller\Plugin\Route"

php 5.3 のコメントで指摘されているように、インクルード パスが構成されていると仮定すると、これは古いバージョンでも機能するはずです。

resources.frontController.plugins.layout = "Fam_Controller_Plugin_Layout"
resources.frontController.plugins.route = "Fam_Controller_Plugin_Route"

ライブラリ内のファイルにマップされます。

APPLICATION_PATH "/../library/Fam/Controller/Plugin/Layout.php"

このプロジェクトの参照用に、私の Zend ファイルは

APPLICATION_PATH "/../library/Zend"

そのため、ファイルを相対的な場所に調整することでうまくいくはずです

オートローダーは設定されていますか? 私は autoloaderNamespaces.0 = "Fam" を持っています

あなたは次のようなものが必要かもしれません

autoloaderNamespaces[] = "User_"
resources.frontController.plugins.UserAuth = "User_Plugin_Auth"
于 2012-12-08T12:29:08.490 に答える