В настоящее время я пытаюсь познакомиться с программированием пользовательских компонентов для Joomla 3.4.8. Поэтому я установил новый веб-сайт Joomla на Raspberry Pi 2 для тестирования. Все работает как надо.
Затем я начал делатьРазработка компонента MVCУчебник предоставлен самой Joomla. Все отлично работало до точки 7 ‘Использование базы данных».
Хотя этот момент говорит о базе данных, проблема состоит в том, чтобы заставить типы полей работать. То есть Когда я хочу добавить новый элемент меню (в части администратора) и выбираю тип элемента пользовательского меню, я получаю сообщение об ошибке «Ошибка загрузки файла формы».
Я пытался найти ошибку в течение нескольких дней, но безуспешно. Я даже зашел так далеко, чтобы отследить строку кода внутри фреймворка joomla, которая выдает эту ошибку. Строка кода находится внутри /libraries/legacy/model/form.php
(строка 192). На этой линии вы можете увидеть $this->preprocessForm($form, $data);
, Но почему-то код даже не входит в этот метод, он просто выдает исключение.
Я сравнил $form
а также $data
переменная с теми из нормального запуска, добавив следующий оператор (найдено Вот) до строки 192:
echo "<pre>"; print_r($arr); echo "</pre>";
$form
Переменные не имеют никакой разницы. $data
переменные, однако, немного отличаются. К сожалению, я довольно новичок в этих понятиях, поэтому я не знаю, что может быть не так или где искать проблему.
Надеюсь, кто-нибудь из вас сможет мне помочь …
Для завершения здесь вывод $data
переменная, когда ошибка вызвана:
Array
(
[parent_id] => 1
[level] =>
[lft] =>
[rgt] =>
[alias] =>
[id] =>
[menutype] => mainmenu
[title] =>
[note] =>
[path] =>
[link] => index.php?option=com_helloworld&view=helloworld
[type] => component
[published] =>
[component_id] => 10000
[checked_out] =>
[checked_out_time] =>
[browserNav] => 0
[access] =>
[img] =>
[template_style_id] => 0
[params] => Array
(
[menu-anchor_title] =>
[menu-anchor_css] =>
[menu_image] =>
[menu_text] => 1
[page_title] =>
[show_page_heading] =>
[page_heading] =>
[pageclass_sfx] =>
[menu-meta_description] =>
[menu-meta_keywords] =>
[robots] =>
[secure] => 0
)
[home] => 0
[language] =>
[client_id] =>
[request] => Array
(
[option] => com_helloworld
[view] => helloworld
)
[menuordering] => 0
[toggle_modules] => 1
)
Хорошо! Я наконец решил проблему. К сожалению, это была очень глупая ошибка …
Прежде всего, я заметил, что метод preprocessForm($form, $data)
был перезаписан подклассом. Отсюда мой echo
заявления не будут выполнены. Это привело меня к тому, что мой XML-файл в <joomla-root>/components/com_helloworld/views/helloworld/tmpl/default.xml
был загружен.
К сожалению, это не сработало. И это произошло из-за небольшой ошибки в файле XML. Ошибка была очень простой и глупой:
<fieldset name="request">
<field
name="id"type="helloworld"label="COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL"description="COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC"/>
</field>
</fieldset>
Я просто закрыла field
дважды, где второй закрывающий тег использовался на предыдущем шаге урока.
Очень глупая ошибка, которая стоила мне нескольких часов. По крайней мере, у меня было некоторое представление о коде Joomla. Надеемся, что этот пост позволит избежать других, ищущих бесчисленные часы за такую незначительную ошибку.
Других решений пока нет …