我正在改变现有的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数据吗?
- 我应该立即存储表单数据吗?
非常感谢任何帮助。
最好的问候
答案 0 :(得分:0)
好吧,我最终找到了我的问题的答案,我将离开这里找到需要它的人:
任何以POST或GET形式传递的数据,即使没有明确的目标/动作定义(因为我们正在使用MVC),也可以使用JRequest :: getVar()或JRequest :: get()来访问在此处的文档中提到:http://docs.joomla.org/Retrieving_and_Filtering_GET_and_POST_requests_with_JRequest::getVar