Joomla 3.3 — Добавление пользовательских полей ко всем пунктам меню через плагин — параметры не сохраняются

У меня проблема при добавлении настраиваемых полей в представление com_menus — item.

Руководство:
(увидеть: http://docs.joomla.org/Adding_custom_fields_to_core_components_using_a_plugin)

Учебник отлично работает (com_contact), но когда я хочу охватить представление пункта меню: Параметры не сохраняются !!!

Ниже приведен код, который я использую для определения компонента и представления для добавления пользовательской формы.

class plgContentPluginName extends JPlugin {

function onContentPrepareForm($form, $data) {

$app = JFactory::getApplication();
$option = $app->input->get('option');
$view = $app->input->get('view');

switch($option) {

case 'com_menus': {
if ($app->isAdmin() && $view == 'item') {
JForm::addFormPath(__DIR__ . '/forms');
$form->loadFile('item', false);
}
return true;
}

}
return true;

}
}

Вот загружаемый item.xml (/forms/item.xml)

<?xml version="1.0" encoding="UTF-8"?>
<form>
<fields name="params">
<fieldset name="params" label="Custom Fields">
<field name="param1" type="text" label="lbltext"/>
<field name="param2" type="text" label="lblText2"/>
</fieldset>
</fields>
</form>

Форма отображается правильно, когда я создаю или редактирую элемент меню, но значения не сохраняются, когда я нажимаю «Сохранить».

Благодарю.

5

Решение

Я решил это, просто удалив условие $ view == ‘item’ в блоке If.

Наконец-то выглядит так:

class plgContentPluginName extends JPlugin {

function onContentPrepareForm($form, $data) {

$app = JFactory::getApplication();
$option = $app->input->get('option');

switch($option) {

case 'com_menus': {
if ($app->isAdmin()) {
JForm::addFormPath(__DIR__ . '/forms');
$form->loadFile('item', false);
}
return true;
}

}
return true;
}

Item.xml остается прежним.

Кстати: я использую Joomla версии 3.4.1 сейчас.

4

Другие решения

Других решений пока нет …