2013-09-29 31 views
2

我正在创建一个Joomla 2.5组件。在后端,我创建了一个显示网格的模型/视图/控制器'Members'。我还创建了一个MVC'Member',用于添加或编辑网格中的成员。到现在为止还挺好。Joomla:我怎样才能使用一种形式的前端和后端视图?

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

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

回答

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

+0

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

2

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

在您的视图(尽管它应该从模型实际上要求它),你可以这样写:

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