OBEC POCTE
NEVSEREMOS'!

Оцінка користувачів: 0 / 5

Неактивна зіркаНеактивна зіркаНеактивна зіркаНеактивна зіркаНеактивна зірка
 

xml spiderДля перевизначення форми JForm через XML файл є ряд плагінів і порад, що зводяться до підвантаження власного XML файла у плагіні в події onContentPrepareForm (Aixeena CCK, ZUNO example) чи навіть раніше, як робить Form XML Override - у onAfterRoute додаванням чогось типу JForm::addFormPath(JPATH_SITE.'/templates/system/forms/'.$option);

Проте ці методи мають одну ваду(а може навпаки, залежить від ситуації) - ваша форма не заміняє оригінальну, але розширює, перевизначає оригінальні поля вашими, додає нові (є проблема з порядком).

Але якщо треба використати свою форму саме замість оригінальної, то треба всього лише зробити $form->reset(true);

Це вб’є оригінальний XML, а тоді вже робити $form->load($yourxml); чи $form->loadFile($path_to_your_xml_file);

Власне просте перевизначення форм реалізовано у плагіні MVC Override, достатньо його встановити і розташувати вашу XML-форму-перевизначник у потрібному місці.

Раніше я був дурний і розумівся на збоченнях,тому нижче старий мій підхід. Але нікому не розповідайте про нього, я не хочу позоритись.

 

Старий мій підхід

Здавалося б, достатньо замінити у onContentPrepareForm оригінальний об’єкт на свій

$form = new JForm($my_xml_file_from_path);
$form->loadFile($my_xml_file_from_path);

А індіанська хижа вам! Воно все одно не заміняє форму, а накладає на оригінальну форму вашу.

Тому довелось зробити таку підлість

- ітеративно видалити всі поля ориігнальної форми і лише тоді підвантажити свою. І це спрацювало.

             // Remove all core fields
                foreach ($form->getFieldsets() as $fieldset)
                {
                    $fields = $form->getFieldset($fieldset->name);

                    // Validate the fields.
                    foreach ($fields as $field)
                    {
                        $fieldName = $field->getAttribute('name');
                        $form->removeField($fieldName);
                    }
                }

                // Load overrider form
                $form->loadFile($my_xml_file_from_path, false);

 

Зареєструйтесь, щоби додавати коментарі

Якщо ви помітили помилку, то виділіть фрагмент тексту та натисніть Ctrl+Enter
FaLang translation system by Faboba
Електронна бібліотека «Exlibris»: історичні дослідження, мемуаристика, публіцистика, художня література Українська етнографія: книги, курси лекцій, статті й матеріали, мапи, фотоальбоми, веб-ресурси Правителі України: портрети, життєписи, матеріали Твори Адріана Кащенка: романтика козацьких часів Народна війна 1917-1932
Orphus System

Коментарі

  • Урок на майбутнє. Зброя і революція.

    Chillipepper Chillipepper 20.12.2016 22:59
    "... малі держави не можуть ефективно покладатися виключно на стримування в якості основної стратегії ...

    Детальніше...

     
  • AutoReadMore - автоматичне додавання кнопки Детальніше для статей Joomla, інших компонентів і модулі

    gruz gruz 13.07.2016 18:38
    Виправив в останній версі 4.5.3

    Детальніше...

     
  • AutoReadMore - автоматичне додавання кнопки Детальніше для статей Joomla, інших компонентів і модулі

    гром гром 13.07.2016 10:01
    Привіт! Відмінний плагін, не можу застосувати його до категорій. Або скрізь працює або ніде! У ...

    Детальніше...

     
  • VirtueMart 2.x Categories accordion menu

    gruz gruz 28.12.2015 12:54
    http://static.xscreenshot.com/small/2016/01/06/02/screen_12a86996b1b92dde3e5c4ca5b872b516 ...

    Детальніше...

     
  • VirtueMart 2.x Categories accordion menu

    vladsklyar vladsklyar 28.12.2015 05:31
    http://armtrading.ru/ - тут по верхньому меню потрібно

    Детальніше...