2013-02-25 30 views
5

我創建了一個簡單的Joomla 2.5模塊,將有一個HTML表單。joomla模塊開發與表格 - 如何處理

mod_mymodule/tmpl/default.php

<form method="post" id="myemailform" action=""> 
    <label for="ReferralName">Enter Name:</label><input type="text" name="name" value="<?php echo modCamcloudReferralHelper::getReferralName(); ?>"> 
    <label for="ReferralEmail">Enter Email Address:</label><input type="text" name="email"> 
    <label for="ReferralMessage">Enter Message (optional):</label><textarea class="message"></textarea> 
    <span class="countdown"></span> 
    <button type="submit" value="Send Email">Send Email</button> 
    <?php echo JHtml::_('form.token'); ?> 
</form> 

我有一個輔助類在:

mod_mymodule/helper.php - 這只是在它的一些實用功能。

我的問題是在這裏處理我的表單在服務器端的慣例是什麼。我試圖找到人們做了什麼的例子,但我似乎無法找到任何東西。我只是把所有的東西都放在輔助類中:

<form method="post" id="myemailform" action="..\helper.php"> 

或者類似的東西?提前致謝。

回答

3

是的,你應該在模塊助手類中進行表單處理。保留模板文件中的任何邏輯,您可以使用mod_mymodule.php在包含視圖文件之前調用助手方法並分配變量。

不要設置爲表單動作助手文件!我認爲你的情況應該是相同的頁面,所以你也可以省略動作url。

編輯:正如意見中的要求,這將是內容的mod_mymodule.php

// include helper file 
require_once dirname(__FILE__).'/helper.php'; 
// call some method of the helper class 
$items = modMymoduleHelper::getItems(); 

$moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx')); 
// render view file from mod_mymodule/tmpl/default.php, $items is available in the view file 
require JModuleHelper::getLayoutPath('mod_mymodule', $params->get('layout', 'default')); 
+0

因爲我的幫助文件是不一樣的目錄不會我必須指定與表單操作輔助文件?不知道我是否理解這種機制呢?你能提供一個簡單的例子嗎?謝謝。 – Tom 2013-02-25 15:14:25

+0

當您將表單提交到同一頁面時,您的模塊將再次加載。 Joomla會調用'mod_mymodule.php',它應該負責調用helper方法,並將必要的變量傳遞給'mod_mymodule/tmpl/default.php'視圖。 'my_module.php'包括視圖文件和與助手類的通信,當它包含你的模塊時Joomla不會調用任何其他的php文件 – 2013-02-25 15:19:33

+0

我添加了一個'mod_mymodule.php'的例子 – 2013-02-25 15:27:43