1

我正在 Joomla 中创建我自己的插件,我想在文章中添加一个多选列表。我还希望默认选择其中的一些选项。以下是我的代码。

public function onContentPrepareForm($form, $data)
    {
        if (!($form instanceof JForm))
        {
            $this->_subject->setError('JERROR_NOT_A_FORM');
            return false;
        }
        $id = $data->id;
        $catid = $data->catid;
        $db = JFactory::getDBO();
        $query = "SELECT ID, title FROM #__content WHERE catid = '" . SUBTOPIC_CATEGORY_ID . "'";
        $db->setQuery($query);
        $resultArray = $db->loadAssocList();
        $optionsString = '';
        foreach($resultArray as $result)
        {
            $optionsString .= '<option value="' . $result['ID'] . '"> ' . $result['title'] . '</option>';
        }
        if(isset($id) && isset($catid) && $catid == TOPIC_CATEGORY_ID)
        {
            $query = "SELECT subtopic FROM #__empd_topic WHERE ID = '$id'";
            $db->setQuery($query);
            $subtopicArray = $db->loadRow();
        }
        $xmlText = '<?xml version="1.0" encoding="utf-8"?>
<form>
    <fields name="subtopic" label="subtopic">
        <fieldset name="subtopic" label="subtopic">
            <field
                name="subtopic"
                type="list"
                id="subtopic"
                multiple ="true"
                label = "subtopic"
                message = "Message"
            >' . $optionsString . '</field>
        </fieldset>
    </fields>
</form>';
        $xmlObj = new SimpleXMLElement($xmlText);
        $form->setField($xmlObj);
        return true;
    }

现在 xml 中的<field>节点有一个默认属性,但它只能有一个值,我也在xml 中的节点selected="selected"内尝试过<option>,但它不起作用。您可以在此处获取有关 xml 列表的参考。

4

2 回答 2

0

尝试在这样的字符串中添加默认值:

default="[\"3\",\"5\",\"7\"]"

我认为这是答案的原因是因为那是 JSON,我知道数据保存在 JSON 中。你必须逃避 " 字符

于 2012-10-21T09:31:23.420 回答
0
$selected = array("2","3","4");  //selected by default

foreach($resultArray as $result)
        {
            if(in_array($result['ID'],$selected)) {
               $select = "selected=\"selected\"";
            } else {
               $select = "";
             }

            $optionsString .= '<option value="' . $result['ID'] . '" '.$select.' > ' . $result['title'] . '</option>';
        }

xml

<field
 name="subtopic"
 type="list"
 id="subtopic"
 multiple ="true"
 label = "subtopic"
 message = "Message"
 size="5" //add this 
 >
于 2012-10-22T05:15:29.870 回答