列表表单字段类型中的多个选择选项不起作用Joomla 3.2

时间:2014-02-21 07:44:45

标签: joomla joomla3.0 joomla3.2

我正面临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>

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

2 个答案:

答案 0 :(得分:4)

你没有得到价值,因为你没有得到并保存它。这是你需要做的: 在您的jTable bind()方法中,您需要添加以下行:

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。

答案 1 :(得分:0)

首先,@ di3sel是完全正确的。我只是添加了一些不适合评论的内容。

如果您将第二个代码添加到jTable:load方法而不是jModel::getItem,也可以。但是代码会稍微改变一下。请注意,在这种情况下,我们必须使用$this代替$item

parent::load($pk);

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

这也很好,因为只需要修改一个类文件。希望这对至少有人有帮助。