2012-03-07 87 views
2

我一直在試圖編寫一個控制器插件,我將用它來進行用戶認證。 我已經寫了插件,它應該工作,但我只是沒有得到如何獲得插件加載...我讀了Zend框架有很多自動加載的可能性..Zend Framework插件自動加載

我當前的目錄結構:

domains 
example.com 
    Application 
     configs 
     controllers 
      IndexController.php 
      AuthController.php 
      ErrorController.php 
     forms 
     layouts 
      scripts 
       layout.phtml 
     models 
     plugins 
      AuthenticationPlugin.php 
     views 
      helpers 
      scripts 
       auth 
        login.phtml 
       error 
        error.phtml 
       index 
        index.phtml 
     Bootstrap.php 
    library 
     Zend 
    pubic_html 
     .htaccess 
     index.php 

任何人都可以幫助我嗎?

在此先感謝!

回答

3

假設你appnamespaceApplication_,那麼你的插件類應該是:

  1. 命名Application_Plugin_AuthenticationPlugin

  2. 存儲與使用類似FrontController設計註冊文件application/plugins/AuthenticationPlugin.php

  3. 中(以application/configs/application.ini):

    resources.frontController.plugins.auth = "Application_Plugin_AuthenticationPlugin"

0

添加以下行中例如引導文件:

Zend_Controller_Front::getInstance()->registerPlugin(new AuthenticationPlugin()); 
+0

然後我得到了AuthenticationPlugin類不能被發現的消息... 我可以在庫中創建目錄另一個目錄和使用插件在那裏工作? – 2012-03-07 21:38:45

+0

您的目錄結構正常。在AuthenticationPlugin.php中,嘗試將你的類重命名爲Zend_Plugin_AuthenticationPlugin,並將上面的行更改爲'Zend_Controller_Front :: getInstance() - > registerPlugin(new Zend_Plugin_AuthenticationPlugin());' – Config 2012-03-07 22:14:01

+1

我建議不要將自定義app/lib類放在'Zend_'命名空間。更好的是我想在一個appnamespace或一個單獨的lib名稱空間中命名它們。 – 2012-03-08 09:32:41

2

您可以創建一個類似文件夾結構Zend的你自己的庫文件夾。舉例來說(假設你自己的命名空間My_):

library 
    My 
    Controller 
     Plugin 
     Authentication.php 

Authentication.php將包含一個名爲My_Controller_Plugin_Authentication類。

你可以這樣註冊了命名空間在引導文件(manual):

$autoloader = Zend_Loader_Autoloader::getInstance(); 
$autoloader->registerNamespace('My_'); 

如果做不到這一點,你可以使用上面使用資源自動加載(manual)的結構。 Zend Framework期望這些文件夾中的類也是名稱空間的前綴,因此您的類名將是Plugin_AuthenticationPlugin