3

XenForo で次の関数を使用すると、ノードごとにチェックボックスが作成され、選択したオプションがデータベースに保存されますが、オプションをリロードすると、保存された値がフォームに再入力されません。

オプション:

<option option_id="hc_watched_forums_list" edit_format="callback" data_type="array" can_backup="1">
<default_value>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";}</default_value>
            <edit_format_params>HotCopper_Option_NodeChooser::renderCheckbox</edit_format_params>
<sub_options>*</sub_options>
<relation group_id="hc_misc_options" display_order="3306"/>
</option>

機能: (簡略化)

class HotCopper_Option_NodeChooser extends XenForo_Option_NodeChooser
{
    public static function renderCheckBox(XenForo_View $view, $fieldPrefix, array $preparedOption, $canEdit)
    {
        return self::_render('option_list_option_checkbox', $view, $fieldPrefix, $preparedOption, $canEdit);
    }
}

チェックボックスが再設定されない理由と、それを修正するためにできることを教えてください。ありがとう

4

2 に答える 2

2

クラスの_renderメソッドは、XenForo_Option_NodeChooser選択されたノードが 1 つだけであることを想定しているため、値が単一の符号なし整数であることが想定されていますnode_id

配列を渡しているため、機能しません。

このオプションを追加するには、独自のスタンドアロン メソッドを作成する必要があります。

于 2015-03-17T08:39:27.853 に答える