Как устранить эту ошибку: Joomla CMS Form Form:: getInstance () не удалось загрузить файл

#forms #joomla3.0

#формы #joomla3.0

Вопрос:

Я работаю над компонентом Joomla и столкнулся с проблемой, которая абсолютно не представляет, как и почему это происходит и как ее решить.

У меня есть два представления, показывающие список из двух разных таблиц БД. Один называется «проекты», а другой — «поля». Представление проектов работает, а представление полей — нет. Код из представления полей скопирован из представления проектов и весь код файлов (контроллер, модель, представление, form.xml таблица) такая же, за исключением имен, имя_таблицы и / или имя_поля.

Ошибка возникает, когда в поле просмотра этого кода срабатывает:

 $this->filterForm = $this->get('FilterForm');
  

Каким-то образом он не может загрузить (или саму) форму.

Если я закомментирую строку и ту часть в default.php , где находятся элементы фильтра, это сработает, но без параметров фильтра.

Если я загружу редактирование / новое представление (поле), все работает / отображается правильно, поэтому form.xml не является неправильным / поврежденным.

Я порылся в файлах библиотеки, но не могу найти ни форму, ни код.

И каким-то образом (но это не имеет никакого отношения к этой проблеме) Я не могу найти файл, в котором объявлен класс JViewLegacy.

Ответ №1:

Joomla будет искать xml-определение формы фильтра в models/forms/filter_xxx.xml (например filter_fields.xml , filter_projects.xml ). У вас там есть оба XML-файла?

Команда Joomla недавно (я думаю, версии 8) изменила много имен своих классов. Вы можете найти соответствие между старым и новым в libraries/classmap.php , где они меняют псевдоним со старого на новый. Новое имя JViewLegacy — HtmlView в пространстве имен Joomla CMS MVC View, а исходный код вы найдете в libraries / src / MVC /View.

Комментарии:

1. Спасибо. Действительно, не было ‘filter_fields.xml ‘ в папке forms. Теперь работает как шарм.

2. Хм, я получаю ту же ошибку в строке parent::display($tpl); в конце display () в классе view. Но я не использую никаких фильтров. Есть идеи, что искать? Почему он не сообщает мне, КАКОЙ ФАЙЛ не удалось загрузить?