Спасибо, конечно, но я не совсем понял ваш ответ... Мне нужно загрузить форму из XML и вывести ее на странице компонента в пользовательской части, и как-то эту форму обработать.
Что ж, сегодня я разобрался, как загрузить и вывести форму. Для этого пришлось создать еще одну модель.
В общем, вот что есть у меня:
форму получаю при помощи метода getForm()
public function getForm() {
$modelform = $this->getInstance('Form', 'ZguestbookModel');
return $modelform->getForm();
}
Вот файл модели, экземпляр которой я получил:
<?php
defined('_JEXEC') or die;
jimport('joomla.application.component.modelform');
class ZguestbookModelForm extends JModelForm {
public function getTable($type='Book', $prefix='ZguestbookTable', $config=array()) {
return JTable::getInstance($type, $prefix, $config);
}
public function getForm($data = array(), $loadData = true) {
$form = $this->loadForm($this->option . '.book', 'book', array('control' => 'jform', 'load_data' => $loadData));
if (empty($form)) {
return false;
}
return $form;
}
}
Класс таблицы:
<?php
defined('_JEXEC') or die;
jimport('joomla.database.table');
class ZguestbookTableBook extends JTable {
public function __construct(&$db) {
parent::__construct('#__zguestbook', 'id', $db);
}
}
?>
Форму в шаблоне вывожу так:
<form action="<?php echo JRoute::_('index.php?option=com_zguestbook&layout=edit&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="post-form" class="form-validate">
<fieldset>
<legend><?php echo JText::_('COM_ZGUESTBOOK_TEXT_DETAILS'); ?></legend>
<table>
<?php foreach ($this->form->getFieldset() as $field) : ?>
<tr>
<?php if ($field->type == 'Editor') : ?>
<td colspan="2">
<br />
<?php echo $field->label; ?>
<?php echo $field->input; ?>
</td>
<?php else : ?>
<td>
<?php echo $field->label; ?>
</td>
<td>
<?php echo $field->input; ?>
</td>
<?php Endif; ?>
</tr>
<?php endforeach; ?>
<tr>
<td></td>
<td>
<input type="submit" value="<?php echo JText::_('COM_ZGUESTBOOK_FORM_BUTTON_SUBMIT'); ?>" />
<input type="reset" value="<?php echo JText::_('COM_ZGUESTBOOK_FORM_BUTTON_RESET'); ?>" />
</td>
</tr>
</table>
</fieldset>
<div>
<input type="hidden" name="task" value="" />
<?php echo JHtml::_('form.token'); ?>
</div>
</form>
В итоге форма выводится как надо, но не обрабатывается. На самом деле атрибуты тега <form> я тупо скопировал из административной части компонента, и какие они должны быть на самом деле, я не знаю...
Какие должны быть атрибуты тега <form>, чтобы форма обработалась и произошла запись в таблицу #__zguestbook ??