3

バックエンド コンポーネントに複数選択リストを追加しようとしていますが、うまく動作しないようです。joomla フォーラムを検索して、彼らが提案したことを試してみましたが、まだ機能しません。

これが私がやったことです:

/models/fields/categories.php

foreach ($result as $item) {
    $options[] = JHtml::_('select.option', $item->id, $item->title);
};
$drawField  = '';
$drawField .= '<select name="'.$this->name.'" id="'.$this->name.'" class="inputbox" size="10" multiple="multiple">';
$drawField .= JHtml::_('select.options', $options, 'value', 'text', $strVal, true);
$drawField .= '</select>';
return $drawField;

/models/forms/edit.xml

<field name="catid" type="categories" multiple="true" size="40" class="inputbox" label="COM_PRODUCTS_FORM_LBL_EDIT_CATID" description="COM_PRODUCTS_FORM_DESC_EDIT_CATID" required="true" filter="safehtml" />

/models/edit.php

protected function loadFormData()
{
    $data = JFactory::getApplication()->getUserState('com_products.edit.edit.data', array());
    if (empty($data)) {
        $data = $this->getItem();
        $data->catid = explode(',',$data->catid);
    }
return $data;
}

/tables/edit.php

public function check() {
    if (property_exists($this, 'ordering') && $this->id == 0) {
        $this->ordering = self::getNextOrder();
    }
    $this->catid = implode(',',$this->catid);   
return parent::check();
}

フィールド catid をバックエンドに「Array」として保存します。しかし、フィールド値として手動で 143,148 を入力すると、それらのフィールドが強調表示されないため、明らかに私の内破/爆発が機能していません..どんな助けでも大歓迎です!!

ありがとう :)

4

1 に答える 1

4

わかりました..問題はこれでした:他の誰かが同じことで問題を抱えている場合、xmlファイルのfilter="safehtml"...すべてが今は良いです:)

于 2012-05-25T01:37:14.247 に答える