2012-05-25 7 views
3

J'essaie d'ajouter une liste de sélection multiple à mon composant backend, mais je n'arrive pas à le faire fonctionner. J'ai essayé de chercher sur les forums joomla et j'ai essayé ce qu'ils ont suggéré, mais ça ne marche toujours pas.joomla 2.5 enregistrer plusieurs listes de sélection?

Voici ce que je l'ai fait:

/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" /> 

/modèles/modifier. 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(); 
} 

Il enregistre le champ catid en tant que "Array" dans le backend. Pourtant quand je mets manuellement 143.148 comme valeur de champ, il ne met pas en évidence ces champs, donc évidemment mon implode/explosion ne fonctionne pas .. Toute aide serait appréciée !!

Merci :)

Répondre

4

Ok figured it out .. La question était la suivante: filter = « safehtml » dans le fichier xml si quelqu'un d'autre est d'avoir des problèmes avec la même chose ... Tout est bon maintenant :)