Как вы регистрируете плагины Zend Framework в application.ini? - PullRequest
4 голосов
/ 30 марта 2011

В настоящее время плагины, которые я пишу, работают или не работают случайным образом.Некоторые работают, некоторые нет, а некоторые работают часть времени, опять же без очевидного паттерна.Даже если все то же самое написано и зарегистрировано (по-видимому) таким же образом.И я не могу найти надлежащую документацию о том, где разместить ваши плагины и как их зарегистрировать в application.ini, поэтому мне нужно опираться на примеры, которые я нахожу в блогах или здесь.И, скорее всего, некоторые из этих примеров предполагают, что в моем коде могут быть неверные вещи.

Поэтому я просто приведу простой пример, и если вы могли бы предложить, как заставить его работать, и дать ссылки на хорошие статьи оПлагины ZF, я очень признателен за то, что ...

Вот как я сейчас работаю:

Структура каталогов:

/library
   /Zend
   /Plugins
       Myplugin.php
/applications
    /myApp
       /configs
          application.ini
       /modules
          /default
             /controllers
             /configs
             /views, etc
          /admin
             /controllers
             /configs
             /views, etc
       Bootstrap.php
/public_html
   index.php

Myplugin.php содержит один класс:

Class Plugins_Myplugin extends Zend_Controller_Plugin_Abstract
{
     public function init()
     {
          print 'If I can see this, it's finally working!';
     }
}

Материалы, относящиеся к application.ini, выглядят так:

includePaths.library = APPLICATION_PATH "/../../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
pluginpaths.plugins = "Plugins"
resources.myplugin =
resources.frontController.plugins.myplugin = Plugins_Myplugin
;//I assume Plugins_Myplugin should be resolved into library/Plugins/Myplugin.php with    class Plugins_Myplugin inside, given present configuration. Most likely I am wrong somewhere

И наиболее распространенная ошибка обычно такова:

Неустранимая ошибка: класс 'Plugins_Myplugin'не найден в /whwhat/nevermind/domains/mydomain/library/Zend/Application/Resource/Frontcontroller.php в строке 117

Иногда его можно найти , если я зарегистрируюсь"это всего лишь resources.myplugin = , пропуская всю строку * resources.frontController.plugins.myplugin = Plugins_Myplugin *.

Так что, очевидно, это неправильный способ регистрации ваших плагинов.Что не так с этим, и что было бы хорошо (используя application.ini)?

Ответы [ 3 ]

11 голосов
/ 30 марта 2011

вы должны знать, что ваше собственное пространство имен - «Плагины», и рассмотреть возможность добавления этих строк в вашу конфигурацию:

includePaths.library = APPLICATION_PATH "/../library"
autoloaderNamespaces[] = "Plugins"
resources.frontController.plugins[] = "Plugins_Myplugin"

и обязательно удалить их:

includePaths.library = APPLICATION_PATH "/../../library"
pluginpaths.plugins = "Plugins"
resources.myplugin =
resources.frontController.plugins.myplugin = Plugins_Myplugin
0 голосов
/ 07 февраля 2013

Лучший способ создать это:

-applications
   +controllers
   +layouts
   +models
      -plugins
         **Myplugin.php**
   +views

В application.ini:

includePaths.plugins = APPLICATION_PATH "/plugins"

как я называю этот плагин .... Простой способ, нужно только это:

public function indexAction() 
{
    $Myplugin = new Myplugin();
}
0 голосов
/ 26 сентября 2012

Метод, описанный выше, не работал для меня, пока я не изменил:

autoloaderNamespaces[] = "Plugins"

на

autoloadernamespaces[] = "Plugins"

Моя структура каталогов по умолчанию Zend.Моя операционная система Windows 7 профессиональная.Я использую WAMP ... Надеюсь, это поможет, так как я не могу (или не знаю, как) прокомментировать ответ выше.

...