2

我正在创建一个 Joomla 2.5 组件。在后端,我创建了一个模型/视图/控制器“成员”,它显示了一个网格。我还创建了一个 MVC 'Member',用于从网格中添加或编辑成员。到目前为止,一切都很好。

现在,我想添加一个前端视图,它与后端的“成员”视图非常相似,但这个视图是为访问者设计的,因此他们可以自己订阅。它必须比后端表单看起来更用户友好,所以我将在前端创建一个稍微不同的“成员”视图,但我真的很想重用表单文件 (/administrator/components/mycomponent/models/forms/member .xml) 从后端!

所以,我的问题是我的前端视图如何找到并使用该后端表单?

4

3 回答 3

2

如果您遵循 Joomla MVC 指导,您的前端应该能够自动获取表单。

在您看来(尽管它实际上应该从模型中请求它)您可以编写:

$formsPath = JPATH_ADMINISTRATOR.DS.'components'.DS.'com_mycom'.DS.'models'.DS.'forms';
$this->form = JForm::getInstance('myform', $formsPath.DS.'myform.xml');
于 2013-09-29T16:58:29.753 回答
2

您肯定必须将其加载到模型中。您的模型必须扩展 JModelAdmin,然后该getForm函数必须加载表单

public function getForm($data = array(), $loadData = true) {
    // Get the form.
    JForm::addFormPath(JPATH_COMPONENT_ADMINISTRATOR . '/models/forms');
    JForm::addFieldPath(JPATH_COMPONENT_ADMINISTRATOR . '/models/fields');
    $form = $this->loadForm('com_dpattachments.attachment', 'attachment', array('control' => 'jform', 'load_data' => $loadData));
    if (empty($form)) {
        return false;
    }
    ....
}

我在我的 DPAttachments 组件中使用相同的方法,它适用于 Joomla 3.1,但主要代码在正面和背面使用相同的模型和形式,也应该在 Joomla 2.5 上运行。这是getForm函数的链接 https://github.com/Digital-Peak/DPAttachments/blob/master/com_dpattachments/admin/models/attachment.php#L102

于 2013-09-29T17:49:03.767 回答
1

您还可以查看夏季代码 cm_config 项目,该项目使用 JSON 将配置表单和 templateDetails 表单拉到前端。https://github.com/Buddhima/joomla-cms/tree/gsoc_com_config 或 com_services 分支。

于 2013-09-30T22:30:11.583 回答