2013-09-29 30 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'); 
相關問題