2012-01-06 3 views
2

Я пытаюсь создать свои собственные плагины, и до сих пор ничего не работает для меня, предположим, что у меня будет каталог моих плагинов в папке приложения, который, по моему мнению, является местоположением по умолчанию :Плагины Zend Framework Location & Name

application/plugins/WhosOnline.php 

содержимое моего плагина:

Class My_Plugin_WhosOnline extends Zend_Controller_Plugin_Abstract 

{ 
    public function preDispatch(Zend_Controller_Request_Abstract $request) { 

     echo 'I have reached the plugin'; 
      exit; 

    } 
} 

Как точно зарегистрировать этот плагин в application.ini файл? Я пробовал:

resources.frontController.plugins.whosonline = "My_Plugin_WhosOnline" 

Я также попытался:

resources.frontController.plugins[] = "My_Plugin_WhosOnline" 

Я получаю ошибку:

Class 'My_Plugin_WhosOnline' not found 

Как я могу соответствовать этим путям ?? Должен ли я создать каталог application/plugins/My/Plugin/, а затем разместить там файл WhosOnline.php? Должен ли я регистрировать пространство имен My_Plugin? Если да, то как мне это сделать? Пожалуйста помоги! Я знаю, что этот вопрос задавали раньше, но мне нужно, чтобы кто-то объяснил это мне гораздо медленнее.

ответ

0

После игры много с ним я в конечном итоге делает следующее, я добавил их к моему application.ini:

autoloaderNamespaces[] = "MyPlugins_" 
resources.frontController.plugins.WhosOnline = "MyPlugins_WhosOnline" 

Затем я создал папку под названием MyPlugins внутри библиотеки папку, а затем Я создал файл плагина, называемый WhosOnline.php с содержимым:

Class MyPlugins_WhosOnline extends Zend_Controller_Plugin_Abstract 
    { 
     public function preDispatch(Zend_Controller_Request_Abstract $request) { 

      echo 'I have reached the plugin'; 
      exit; 

     } 
    } 

я, наконец, получил это работает!

1

То, что вы правильно добавьте следующую строку в вашем Application.ini

appnamespace = «Мои»

2

Если плагин находится в application/plugins/WhosOnline.php, то имя класса по умолчанию для Zend Application будет Application_Plugin_WhosOnline.

Если ваше пространство имен является чем-то отличным от Application, то это будет префикс для вашего класса.

Если вы хотите класс называться My_Plugin_WhosOnline, создайте папку с именем My в library папку с названием вложенной Plugin (не плагин), и поместить туда файл и добавить Zend_Loader_Autoloader::getInstance()->registerNamespace('My_'); к вашему Bootstrap.

Смежные вопросы