当前位置: 首页 > 知识库问答 >
问题:

将DB值插入窗体字段

华易安
2023-03-14

问题:如何将数据库表(#_umytable)中的值插入表单文本字段(motitlemodescription),这些字段是从Joomla 3.0平台内的XML文件中呈现的?

-

我已经试了好几天来解决这个“简单”的Joomla!基于未记录的挑战。我跟着乔姆拉!”s的MVC开发指南,阅读了他们大多数过时的文档,撕开了com\u内容组件,但仍然不知道如何填充我的字段。

我一直在玩这个-

下面我包含了一些代码来显示我正在使用的结构。请随时指出您发现的任何问题。

模型\窗体\item.xml

<?xml version="1.0" encoding="UTF-8"?>
<form>
    <fields name="groupOPTIONS">
        <fieldset name="Options">
            <field
                type="text"
                name="motitle"
                id="motitle"
                label="Title"
                description="MY TEXT FIELD DESCRIPTION"
                maxLength="255" />
            <field
                type="textarea"
                name="modescription"
                id="modescription"
                label="Description"
                description="MY TEXT FIELD DESCRIPTION"
                rows="15"
                cols="5"
                maxLength="255" />
        </fieldset>
    </fields>
</form>

模型\item.php

jimport('joomla.application.component.modelitem');
class MagicObjectsModelItem extends JModelForm {

public function getForm($data = array(), $loadData = true) {
    // Get the form 'items'
    $form = $this->loadForm('com_magicobjects.item', 'item',
        array('control' => 'jform', 'load_data' => $loadData));

if (empty($form)) {
    return false;
}

            return $form;
}

protected function loadFormData() {
    // Check the session for previously entered form data.
    $data = JFactory::getApplication()->getUserState('com_magicobjects.item.edit.data', array());

    if (empty($data)) {
            $data = $this->getDBItem(1);
    }

    return $data;
}

public function getDBItem($pk) {
    //Obtain JDatabase static connection
    $oDb = JFactory::getDbo();
    $oQuery = $oDb->getQuery(true);
    $sValueToMatch = $pk;
    $oQuery
        ->select(array('mid', 'name', 'keyword', 'description'))
        ->from('#__mytable')
        ->where('mid = "' . $sValueToMatch . '"')
        ->order('mid ASC');

    $oDb->setQuery($oQuery);
    return $oDb->loadObjectList();
}

视图\项目\view.html.php

jimport('joomla.application.component.view');

function display($tpl = null) {

    // Initialise variables.
    $this->form = $this->get('Form');
    $this->item = $this->get('Item');

//Display the view
    parent::display($tpl);
}

视图\item\tmpl\default。php

foreach ($this->form->getFieldset('Options') as $field) {
    echo $field->label;
    echo $field->input;
}

通过对项目执行print_r(),我可以看到我有数据,但是我需要将数据插入到显示的字段中。

共有3个答案

羊浩广
2023-03-14

而不是$oDb-

看看这个-http://docs.joomla.org/Accessing_the_database_using_JDatabase/1.5

也请检查此项-joomla loadformdata

希望这能奏效。

松鸣
2023-03-14
匿名用户

在Joomla 3中,JForm::bind()方法似乎接受对象或关联数组作为参数。然后,所有对象/数组字段都存储在受保护的J注册表类型数据成员中,该成员称为JForm::$data

当您试图显示表单字段时(通过调用JForm::getInput()),调用堆栈如下所示

JForm::getInput() -> JForm::getField() -> JForm::loadField() -> JForm::getValue()

JForm::getValue()从(前面提到的JRegistryJForm::$data数据成员返回一个值。JForm::loadField()方法还将默认值(由表单定义)传递给JForm::getValue()方法,以防JForm::$data变量中不存在值。

就在模型中这样做而言,您可能希望从数据库查询或表中生成对象或assoc数组(确保字段名称与表单xml中定义的字段名称相对应),然后将其传递给JForm::bind()作为参数。但是,如果您正在使用JModelForm,我认为您应该只重写JModelForm::loadFormData()来将对象/assoc数组传递给加载的表单。

请参见:库/joomla/form/form.php

希望有帮助:)

后凯捷
2023-03-14

在这种情况下,这仍然是一个问题,因为表单定义正在定义一个

这意味着表单字段将按如下方式输出:

input type="text" name="[groupOPTIONS][motitle]" 

基于你上面给出的例子。如果您删除分组的字段,它可能会工作。这很烦人,尽管某些JForm方法只适用于组...

如果您想保持字段分组(例如通过重载getItem),您可能需要更改数据传递到表单的方式。

希望这有意义...

 类似资料:
  • 问题内容: 我从终端创建了一个表,然后尝试创建简单的任务:从表单中插入值。这是我的 这是我的。 按下我的保存按钮后,什么也没有发生,数据库仍然为空。我尝试了查询,当它被认为它从形式的所有值。在尝试从终端检查是否可以正常工作后,我登录到尝试从用户表返回所有数据的操作,但得到了空集。 问题答案: 以下代码仅声明了一个包含MySQL查询的字符串变量: 它不执行查询。为此,您需要使用一些功能,但让我先解释

  • 我正在尝试创建一个joomla插件,它将向joomla组件的数据库表中插入一个值。我已经通过Joomla扩展管理器成功构建并安装了该插件,但是当我启用该插件时,我没有看到数据库表中插入的值。下面是我要查看的插件中的代码: 编辑更新11/07/13:我正在从插件中添加文件,以帮助为问题提供更多的上下文。最后,我将上面的php文件和下面的xml组合起来,创建整个插件包。当我在Joomla 2.5站点上

  • 问题内容: 我有一长串需要在单列SQL Server表中插入的值。我使用以下代码。但是,这需要很长时间。有没有更简单的方法来实现这一目标? 问题答案: 尝试此操作,它将在单个连接上运行,因此您可以避免按照@vonPryz进行的昂贵开销:

  • 问题内容: 我想在Python中将变量引入字符串中。 例如,看下面的脚本。我只是想为图像起个名字,例如…到,或者如果您使用会计师,因为我可以替换部分价值链以生成计数器。 问题答案: data = self.cmd(“r.out.gdal in=rdata out=geo{0}.tif”.format(i)) self.dataOutTIF.setValue(“geo{0}.tif”.format(

  • 我有一个带有JavaScipt的PDF,所有终端用户都运行Adobe Acrobat Pro DC。我已经成功地找到了如何让它用来自其他表单字段的值填充表单字段: 但我尝试做的基本上是一样的,但我尝试获取一个变量的值,并将其添加到表单字段中。 有什么想法吗?谢谢

  • 我使用Golang将数据插入到DB中,基本上我的查询如下所示 中唯一可用的内容是lastInsertId和受影响的行的#。但我需要的是受影响的行。原因是我将数据插入到一个psql数据库中,该数据库有一个自动增量id列,所以我希望数据与此一起返回。 例如,使用Java hibernate,我可以做这个答案解释的事情。我不需要在数据库中重新查询ID。 编辑:我试图使用lastInsertId方法,但出