【发布时间】:2013-04-22 16:15:04
【问题描述】:
我正在更改现有的 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 视图表单数据存储在数据库中,因为它显然不应该存储任何东西。 “会话”仅在单击继续并调用测验视图后存储(在相应的表上)。
谁能指出我正确的方向? Joomla 处理数据库调用的方式不太舒服。
-我应该在测验视图的 default.php 文件中捕获 POST 数据吗?
-我应该立即存储表单数据吗?
任何帮助将不胜感激。
最好的问候
【问题讨论】:
标签: php model-view-controller joomla