it-swarm.com.de

Datenbankergebnis als Auswahloption hinzufügen

Ich erstelle ein Joomla 3x SP= Pagebuilder3 Addon, aber ich habe ein bisschen Probleme damit, Datenbankergebnisse als Option in einem ausgewählten Typ zu erhalten.

Das habe ich bisher gemacht.

class MyCustomTypes {

public static function getBannerCats(){
    $db       = JFactory::getDbo();

    $query = $db->getQuery(true)
        ->select(array('id', 'title', 'alias'))
        ->from('#__categories')
        ->where('extension = ' . $db->quote('com_banners'))
        ->where('parent_id > 0')
        ->where('published > -1');
    $db->setQuery($query);
    $items = $db->loadObjectList();

     $options = array();
     if ($items)
     {
      foreach($items as $item)
      {
        // THIS IS WHERE MY PROBLEM IS
        $options[] = $item->title;
      }
     }

    // $options = array_merge(parent::getOptions(), $options);

     return $options;

  }

}

Ich möchte hier Optionen zeigen

        'category_ids'=>array(
            'type'=>'select',
            'title'=>JText::_('Categories'),
            'desc'=>JText::_('Category Source'),
            'values'=>array(MyCustomTypes::getBannerCats()),// Result will show here like so 'result_id'=>'result_title'
        )

Ich würde mich freuen, wenn mir jemand weiterhelfen kann. Vielen Dank.

2
David Addoteye

Nachdem Sie Ihre Frage aktualisiert haben ...

Wenn Ihr Array $options Assoziativ sein muss, erstellen Sie es auf diese Weise in der Schleife.

$options[$item->id] = $item->title;

Ihr values -Element scheint zu komplex zu sein.

'values'=>array(MyCustomTypes::getBannerCats())  // multi-dim array

dadurch wird das zurückgegebene eindimensionale Array in einem Array gespeichert. Ich nehme an, Sie sollten stattdessen Folgendes verwenden:

'values' => MyCustomTypes::getBannerCats()  // 1-dimensional array

Vor dem Fragenupdate ...

Es sieht so aus, als ob Ihre select() -Methode 3 Parameter empfängt, Sie möchten jedoch 1 Zeichenfolge mit 3 Werten oder ein Array mit 3 Elementen übergeben.

Ich empfehle dies:

->select(['id', 'title', 'alias'])

oder

->select('id, title, alias')

oder

->select($db->qn(['id', 'title', 'alias']))

Um zu erklären, was Joomla tut ... Die select() -Methode akzeptiert nur einen Parameter/ein Argument, daher wird nur id verwendet und title und alias werden von der Methode einfach ignoriert. Wenn Sie $query->dump() aufrufen, sehen Sie ungefähr Folgendes (mit Ihrem Tabellenpräfix anstelle von #_)

SELECT id
FROM #__categories
WHERE extension = 'com_banners' AND parent_id> 0 AND published> -1

Ergo wird $item->title; Niemals Daten enthalten.


Bevor Sie eine Frage stellen, wenn Sie der Meinung sind, dass nicht funktioniert , überprüfen Sie, ob Fehler vorliegen, und sichern Sie Ihre Abfrage, um sicherzustellen, dass keine einfachen Tippfehler vorliegen.

p.s. Wenn Sie nur title verwenden, schreiben Sie nur einen Wert in SELECT und verwenden Sie eine einfachere Methode zum Abrufen von Ergebnismengen, um eine einzelne Datenspalte zu verarbeiten .

1
mickmackusa