it-swarm.com.de

Benutzerdefiniertes Feld mit mehreren Listen für Komponente speichern

Ich habe einen benutzerdefinierten Formularfeldtyp erstellt

class JFormFieldCategories extends JFormFieldList 
{

protected $type = 'categories';

public function getOptions() 
{
    $db = JFactory::getDBO();
    $categories=array();

    $sql = "select * from #__table";
    $db->setQuery( $sql );
    $results = $db->loadObjectList();
    if(count($results)>0)
    {
        foreach($results as $resc){
            $options[$resc->id] = $resc->description;
        }
    }

$options = array_merge(parent::getOptions(), $options);
            return $options;
   }
}

Ich habe das Feld zum Formular hinzugefügt

<field name="discount_on_categories" type="categories" multiple="true" size="40"  />

Dies ist ein Mehrfachauswahlwert. Was kann ich tun, um die ausgewählten Werte in der Datenbank zu speichern und beim Bearbeiten des Elements anzuzeigen?

1
dip

Ich habe die Lösung dafür gefunden, also teile ich sie nur für den Fall, dass jemand anderes dies benötigt. Ich habe einen Teil des Codes an 2 Stellen hinzugefügt. Zuerst in der Tabellendatei, in der Bindefunktion:

if (isset($array['discount_on_categories']) && is_array($array['discount_on_categories'])) {
        $registry = new JRegistry;
        $registry->loadArray($array['discount_on_categories']);
        $array['discount_on_categories'] = (string) $registry;
    }

und dann in der Modelldatei:

        $registry = new JRegistry;
        $registry->loadString($item->discount_on_categories);
        $item->discount_on_categories = $registry->toArray();

Der erste Teil konvertiert den Feldwert in einen String, um ihn in der Datenbank zu speichern, und der zweite Teil konvertiert den String in ein Array, um die ausgewählten Optionen des Felds anzuzeigen.

1
dip

Ich denke, Sie sind hinter dieser Frage her - überprüfen Sie meine Antwort hier . Ich brauchte das Gleiche und fand nach vielen Stunden diese Lösung

0
Alex Mehan