何时以及如何在Joomla页面上将数据插入数据库

时间:2013-04-22 16:15:05

标签: php model-view-controller joomla

我正在改变现有的Joomla 2.5组件,我希望将数据添加到特定的表(安装时已经存在)到几个自定义列。 所以,我有这个视图(测验视图文件夹上的_quizInfo.php)代码,该代码由显示一些信息(从数据库中检索)的表单组成,并继续检查另一个视图(测验视图)的复选框。 (基本上,这是一些启用“继续”按钮的JS线路)。 继承(简化)代码:

<?php defined( '_JEXEC' ) or die( 'Restricted access' ); ?>

<script type="text/javascript" language="javascript">

function proceed()
{
    check = document.getElementById('checkToProceed') ;
    proceedButton = document.getElementById('proceedButton') ;

    if (check.checked) {
        proceedButton.disabled = false ;
    } else {
        proceedButton.disabled = true ;
    }
}

</script>

<form name="quiz_info" method="post">

<?php 
echo '<div class="items-row"><div class="item">';

    echo '<h2>' . JText::sprintf('YOU_HAVE_CHOSEN_TO_TAKE_QUIZ', '"'.$this->quiz- >title.'"') . '</h2>' ;

echo '<ul>' ;

...

echo '</ul>' ;
$option = JRequest::getCmd('option');

$link =  JRoute::_('index.php?option='. $option . '&controller=quiz&layout=default') ;

echo '<p><input type="checkbox" id="checkToProceed" name="checkToProceed" onclick="proceed();" /><label for="checkToProceed">' . JText::_('I_HAVE_READ_AND_UNDERSTOOD') . '</label></p>' ;
echo '<input id="proceedButton" name="proceedButton" disabled="true" value="' . JText::_('PROCEED_TO_QUIZ') . '" type="submit" />' ;

    echo '</div></div>';
?>

<input type="hidden" name="option" value="com_jquarks" />
<input type="hidden" name="id" value="<?php echo $this->quiz->id ; ?>"/>
<input type="hidden" name="task" value="showQuiz" />
<input type="hidden" name="view" value="quiz" />
<input type="hidden" name="layout" value="default" />
<?php echo JHTML::_( 'form.token' );  ?> 

现在,我已经在此页面中添加了一个表单,以便用户可以填写他/她的数据然后继续(我需要在此步骤中存储此数据),所以现在除了代码已经显示我已经在表单标记上添加了以下行:

//Added
echo '<li><p>' . JText::sprintf('Before proceeding you must fill the form bellow:') . '</p></li>' ;

echo '<div style="width: 50%; border: 1px solid; padding: 15px;"><form><div style="width: 100px">Full Name: </div><input type="text" name="fullname" style="width: 100%;"><br/><div style="width:100px"><br>ID document: </div><input type="text" name="iddoc" style="width: 100%;"></form></div>';
//END Added

我注意到表单属于POST类型,但没有定义任何操作。 测验视图然后在显示测验之前(在目标表上)存储所有必要的数据,但我不知道如何继续将_quizInfo视图表单数据存储在DB中,因为它显然不应存储任何内容。 “会话”仅在单击“继续”后存储(在相应的表上),并调用测验视图。

有人能指出我正确的方向吗?对Joomla处理数据库调用的方式不太满意。

- 我应该在测验视图的default.php文件中捕获POST数据吗?

- 我应该立即存储表单数据吗?

非常感谢任何帮助。

最好的问候

1 个答案:

答案 0 :(得分:0)

好吧,我最终找到了我的问题的答案,我将离开这里找到需要它的人:

任何以POST或GET形式传递的数据,即使没有明确的目标/动作定义(因为我们正在使用MVC),也可以使用JRequest :: getVar()或JRequest :: get()来访问在此处的文档中提到:http://docs.joomla.org/Retrieving_and_Filtering_GET_and_POST_requests_with_JRequest::getVar