#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. Но я не использую никаких фильтров. Есть идеи, что искать? Почему он не сообщает мне, КАКОЙ ФАЙЛ не удалось загрузить?