我在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上获得参考。
答案 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
>