【问题标题】:When and how to insert data into DB on a Joomla page何时以及如何在 Joomla 页面上将数据插入数据库
【发布时间】: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


    【解决方案1】:

    好吧,我最终找到了我的问题的答案,我将把它留给需要它的人:

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

    【讨论】:

      猜你喜欢
      • 2011-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-18
      • 2021-11-07
      相关资源
      最近更新 更多