多个选择列表,在Joomla中选择了多个选项!插入

时间:2012-10-20 13:53:19

标签: joomla simplexml joomla2.5

我在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列表here上获得参考。

2 个答案:

答案 0 :(得分:0)

尝试在字符串中添加默认值,如下所示:

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

我认为这是答案的原因是因为这是JSON,我知道数据是以JSON保存的。你必须逃避“人物

答案 1 :(得分: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 
 >