Jform для frontend модуля Joomla 3

  • 1 Ответов
  • 401 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

voron121

  • ****
  • 222
  • [+]1 / [-]0
  • Метод тыка и мата помогает в кодинге
Jform для frontend модуля Joomla 3
« : 21.02.2017, 22:40:24 »
Доброго времени суток уважаемые форумчане. Подскажите коль не сложно, как подключить и использовать JForm и соответсвено form.xml с полями для модуля ? Подразумевается вывод формы в модуле  на фронтенде. В сети информации не нашел кроме вот такого метода

Код: php
(1) module core file: 
$filepath=dirname(__FILE__).'/form/form.xml'; /*put your file in ROOT/modules/mod_yourModule/form/form.xml*/
$form=new JForm('mod_yourModule');
$form->loadFile($filepath);

(2) template file
<form action="<?php echo JRoute::_('index.php', true, $params->get('usesecure')); ?>" method="post" id="login-form">
        <?php
        foreach ($form->getFieldsets() as $fieldset):
            $fields = $form->getFieldset($fieldset->name);
            echo '<fieldset id="'.$fieldset->name.'"';
            if (isset($fieldset->class)) echo ' class="'.$fieldset->class.'"';
            echo '>';
            if (isset($fieldset->label) AND ""!=$fieldset->label) echo '<legend id="legend'.$fieldset->name.'">'.$fieldset->label.'</legend>';
            foreach($fields as $field):
                if ($field->hidden): echo $field->input;
                else: ?>
                    <div class="control-group <?php echo $field->id;?>">
                        <?php echo preg_replace('/class="/', 'class="control-label ',$field->label,1); ?>
                        <div class="controls <?php echo $field->id;?>">
                            <?php echo $field->input;?>
                        </div>
                    </div>
                    <?php endif;
            endforeach;
            echo '</fieldset>';
        endforeach; ?>
</form>

Однако у меня он не работает. Переменная $form->getFieldsets() возвращает пустой массив вместо полей.

Вариант прописать поля формы стандартными тегами input в виде модуля не сильно подходит т.к много полей и это будет не удобно . Прошу помощи, кто сталкивался с такой же задачей ?

*

voron121

  • ****
  • 222
  • [+]1 / [-]0
  • Метод тыка и мата помогает в кодинге
Re: Jform для frontend модуля Joomla 3
« Ответ #1 : 22.02.2017, 15:34:17 »
чуть разобрался с подключением XML файла с формами в модуле. Использовал вот такую конструкцию

Код: php
$Form = new JForm('Form');
$Form->loadFile(JPATH_ROOT.'/modules/mod_filter/form/form.xml');
$formarray = $Form;

Соответствено $formarray  возвращает объект с формами и его можно в цикле обработать в виде. Однако столкнулся с другой траблой : в компоненте я подключаю форму при помощи функции getFrom в модели которая наследует класс  JModelList . В связи с этим при выводе форм у меня у поля есть префикс, к примеру не input_name а jfrom_input_name (я так понимаю что префикс передается в функции getForm как параметр).  Если использовать конструкцию выше то поля формы выводятся без префикса. Его я задал в XML файле с формами вручную (он нужен был, без него никак) однако возник вопрос : как использовать JModelList в модуле если есть такая необходимость ? Можно ли в хелпере к примеру объявить класс class modfilterHelper с наследием JModelList  или это уже чернокнижие и плохая идея ?