0

我在使用 Joomla 表单字段时遇到了奇怪的问题,我已将字段集类型添加为列表并将属性设置为multiple="true". 这里的代码:

<field name="optional"
            type="list"
            label="Optional"
            description="Optional endorsements"
            class="inputbox"
            size="5"
            multiple="true"
         >

         <option value="Water">
                Water</option>
        <option value="Foundation">
            Foundation</option>
</field>

现在,当我保存表单时,选择多个值时只会保存一个值。我不知道是什么问题,如果有人对此有任何解决方案,请帮助我。

4

2 回答 2

4

你没有得到价值,因为你没有正确地获取和保存它。这是您需要做的:在您的 jTablebind()方法中,您需要添加以下行:

if (isset($array['optional']) && is_array($array['optional'])) {
  $registry = new JRegistry;
  $registry->loadArray($array['optional']);
  $array['optional'] = (string) $registry;
}

这会将您的多选数组转换为字符串,并将其保存在数据库中。

然后在模型的方法中getItem,您需要添加以下行:

if ($item = parent::getItem($pk)) {
  $registry = new JRegistry;
  $registry->loadString($item->optional);
  $item->optional = $registry->toArray();
}

这会将数据库字符串转换回数组并将其传递给您的 jForm。

于 2014-02-21T08:17:10.323 回答
0

首先,@di3sel 是完全正确的。我只是在添加一些无法放入评论的内容。

如果将第二个代码添加到jTable:load方法而不是jModel::getItem. 但是代码会发生一些变化。请注意,在这种情况下我们必须使用$this代替。$item

parent::load($pk);

$registry = new JRegistry;
$registry->loadString($this->optional);
$this->optional = $registry->toArray();

从只需要修改一个类文件的观点来看,这也很好。希望这至少对某人有所帮助。

于 2014-05-08T10:32:08.710 回答