it-swarm.com.de

Wie verwende ich Nachschlagetabellen in einer benutzerdefinierten Komponente?

Ich versuche meine erste Komponente in Joomla 3.x zu entwickeln. Ich bin neu im MVC-Paradigma und lerne die Grundlagen der Joomla-Entwicklung.

Zunächst versuche ich, eine einfache Komponente zum Hinzufügen und Anzeigen von Adressen zu entwickeln. Ich habe ein Adressmodell, das JModelItem erweitert, und ein Adressmodell, das JModelList erweitert. Ich verwende Nachschlagetabellen für das Bundesland und die Stadt (basierend auf der Postleitzahl). Wie soll ich diese Informationen nachschlagen, damit ich überall darauf zugreifen kann, wo es nötig ist? Sollte ich Modelle für Bundesstaat, Stadt, Postleitzahl haben und muss der Controller diese Modelle zur Verwendung in der Ansicht hinzufügen? Soll ich Helferklassen verwenden? Soll ich JTable verwenden und auf andere Weise auf die Informationen zugreifen? Ich weiß nicht, wie das in Joomla und dem MVC-Paradigma gemacht wird.

Ich würde mich über Hinweise und Hilfe freuen, die gegeben werden können.

2
nimble

Alle 3 Möglichkeiten (Modelle, JTable, Helferklasse) sind in Joomla legitime Möglichkeiten, um Ihr Problem zu lösen.

Ich würde wahrscheinlich eine JTable-Klasse für Ihre Nachschlagetabelle (für CRUD-Operationen) erstellen und Modelle (Liste und Element) sowie die Ansichten und Controller dafür hinzufügen. Sie können also die Suchdaten in Ihrem Backend ändern und, wenn Sie Ihrer Tabelle weitere spezielle Felder hinzufügen, weitere integrierte Funktionen von Joomla verwenden (z. B. Veröffentlichen, Bestellen usw.).

Sie können eine Methode in Ihr einzelnes Artikelmodell schreiben, um die Daten basierend auf einem Zip-Parameter nachzuschlagen, oder (wahrscheinlich auf meine Art) Sie können eine zusätzliche Hilfsklasse schreiben, die die getItem-Methode des Modells aufruft und einen Zip-Filter festlegt:

<?php
defined('_JEXEC') or die;

// Include your single item model
require_once JPATH_ROOT . '/administrator/components/com_mycomponent/models/lookup.php';

class MycomponentHelperLookup
{
    public static function getDataByZip($Zip)
    {
        $model = JModelLegacy::getInstance('Lookup', 'MycomponentModel', array('ignore_request' => true));
        $model->setState('filter.Zip', $Zip);
        return $model->getItem();
    }
}

Auf diese Weise haben Sie ein hohes Maß an Wiederverwendbarkeit und können viele Joomla-Funktionen nutzen.

1
fruppel