Кастомный элемент формы или Plugin by name xxx was not found in the registry
Когда-то давно я столкнулся с проблемой подключение tinyMCE редактора в качестве элемента формы. Я нашел в интернете руководство по интеграции этого замечательного редактора в Zend Framework.
С хелперами все работало замечательно, т.е. внутри шаблона можно было просто писать
[code language="php"]
$this->tinyMCE()->render();
[/code]
и появлялся редактор :)
Однако, я привык к тому, чтобы делать инициализацию всех элементов формы при помощи компонента Zend_Form, чтобы впоследствии получить удобный механизм проверки всех элементов формы.
И здесь при создании нового элемента
[code language="php"]
// инициализация элементов формы
// ....
$this->createElement('tinyMCE', 'text');
[/code]
появлялась ошибка
Plugin by name 'TinyMce' was not found in the registry; used paths: Zend_Form_Element_: Zend/Form/Element/
Тогда я только начинал знакомство с Zend Framework и убил много времени, чтобы побороть эту ошибку. Однако в итоге сделать этого не смог, выкрутился тем, что при создании элемента прописывал полное название класса
[code language="php"]
// инициализация элементов формы
// ....
$content = new Soulex_Form_Element_TinyMce('descr');
[/code]
Соответсвенно TinyMce располагался в папке Soulex/Form/Element папки library.
Спустя некоторое время я начал делать свой хелпер для файлового менеджера. Файловый менеджер называется tinyBrowser.
И снова столкнулся с этой же самой проблемой.
Plugin by name tinyBrowser was not found in the registry
Поискав в интернете, снова увидел все теже самые статьи (люди спрашивали об интеграции tinyMce и ответа так не получали), когда я впервые столкнулся с этой ошибкой ;)
Не буду больше томить, решение оказалось как всегда простое. Достаточно ДО создания элемента прописать
[code language="php"]
public function init()
{
$this->addPrefixPath('Soulex_Form', 'Soulex/Form');
// инициализация элементов формы
}
[/code]
Вот так все просто :D
ps. В следующий раз выложу решение о том, как подключить свой файловый менеджер к форме в виде кастомного элемента.