Php 如何使用xenforo选项获取要重新填充的复选框

Php 如何使用xenforo选项获取要重新填充的复选框,php,checkbox,admin,option,xenforo,Php,Checkbox,Admin,Option,Xenforo,Im在XenForo中使用以下函数,并为每个节点创建复选框,选择的选项保存在db中,但当重新加载选项时,保存的值不会重新填充到表单中 选项: a:6:{i:0;s:1:4;i:1;s:1:5;i:2;s:1:6;i:3;s:1:7;i:4;s:2:36;i:5;s:2:38;} HotCopper\u选项\u NodeChooser::renderCheckbox * 功能:(简化) class hotcupper\u Option\u NodeChooser扩展了XenForo\u Opt

Im在XenForo中使用以下函数,并为每个节点创建复选框,选择的选项保存在db中,但当重新加载选项时,保存的值不会重新填充到表单中

选项:


a:6:{i:0;s:1:4;i:1;s:1:5;i:2;s:1:6;i:3;s:1:7;i:4;s:2:36;i:5;s:2:38;}
HotCopper\u选项\u NodeChooser::renderCheckbox
*
功能:(简化)

class hotcupper\u Option\u NodeChooser扩展了XenForo\u Option\u NodeChooser
{
公共静态函数renderCheckBox(XenForo_视图$View、$fieldPrefix、数组$preparedOption、$canEdit)
{
返回self::_render('option_list_option_checkbox',$view,$fieldPrefix,$preparedOption,$canEdit);
}
}
你能告诉我为什么不重新填充复选框以及我能做些什么来修复它吗。
感谢类中的
XenForo\u Option\u nodecooser中的
\u render
方法希望只有一个选定节点,因此它希望值是一个无符号整数
节点id

当您向它传递一个数组时,它不起作用


您必须创建自己的独立方法来添加此选项。

我覆盖了原始xenforo节点模型和选项。 只需更改该选项即可调用新模型,模型需要选中该选项以检查nodeid是否在值数组中

公共静态函数getNodeOptions($selectedForum,$includeRoot=false,$filter=false)
{
/*@var$nodeModel热铜\u模型\u节点*/
$nodeModel=XenForo_Model::create('hotcupper_Model_Node');
$options=$nodeModel->getnodeoptionsarray selectedArray(
$nodeModel->getAllNodes(),
$selectedForum,
“选择所需论坛”
);
如果($filter)
{
foreach($options AS&$option)
{
如果(!empty($option['node\u type\u id'])和&$option['node\u type\u id']!=$filter)
{
$option['disabled']='disabled';
}
取消设置($option['node_type_id']);
}
}
返回$options;
}
公共函数GetNodeOptions数组SelectedArray(数组$nodes,数组$selectedNodes,$includeRoot=false)
{
$options=array();
foreach($nodeId=>$node的节点)
{
$node['depth']+=($includeRoot&&$nodeId)?1:0;
$options[$nodeId]=数组(
“值”=>$nodeId,
'label'=>$node['title'],
'selected'=>(在_数组中($nodeId,$selectedNodes)),
'depth'=>$node['depth'],
'node\u type\u id'=>$node['node\u type\u id']
);
}
返回$options;
}

我假设您不是使用XML添加它们,而是使用调试模式UI?