Forms Joomla:如何使用一个表单进行前端和后端查看?

Forms Joomla:如何使用一个表单进行前端和后端查看?,forms,model-view-controller,joomla,reusability,Forms,Model View Controller,Joomla,Reusability,我正在创建Joomla 2.5组件。在后端,我创建了一个显示网格的模型/视图/控制器“成员”。我还创建了一个MVC“成员”,用于从网格中添加或编辑成员。到目前为止还不错 现在,我想添加一个前端视图,它与后端的“成员”视图非常相似,但这一个视图是为访问者提供的,因此他们可以自己订阅。它必须看起来比后端表单更友好,因此我将在前端创建一个稍微不同的“成员”视图,但我确实希望从后端重用表单文件(/administrator/components/mycomponent/models/forms/Memb

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

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


因此,我的问题是我的前端视图如何查找和使用该后端表单?

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

在您的视图中(尽管它实际上应该从模型中请求),您可以编写:

$formsPath = JPATH_ADMINISTRATOR.DS.'components'.DS.'com_mycom'.DS.'models'.DS.'forms';
$this->form = JForm::getInstance('myform', $formsPath.DS.'myform.xml');

你一定要把它载入模型。您的模型必须扩展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函数的链接

您还可以查看代码cm_config项目的summer,它使用JSON将配置表单和templateDetails表单拉到前端。或者是康普服务部。

第3行和第4行是我要找的行!但是,我将JForm::addFormPath()和JFrom::addFieldPath()放在/site/mycomponent.php中,让所有前端模型从后端获取表单。谢谢