Joomla-Komponenten verwenden das MVC-Modell. Component Creator ist ein weit verbreitetes Tool, dessen bezahlte Ebene die Erstellung von Multi-Table-Views mit SQL-Import unterstützt. Entwickler bauen auch Komponenten von Grund auf neu nach Joomla-Dokumentation.Wie kann ich mehrere Modelle in einer Ansicht für eine Joomla 3.x-Komponente enthalten, die mit Component Creator erstellt wurde
Ich möchte eine erweiterte Komponente erstellen, die als "Dashboard" Daten aus mehreren Datenbanktabellen mit allen Administrator-Back-End-und Besucher-Front-End-CRUD (CREATE, READ, UPDATE, DELETE) Funktionen von Joomla. Dies bedeutet, dass ich mehrere Modelle (aus der MVC-Philosophie) brauche, die aus mehreren Datenbanktabellen auf dem Bildschirm gleichzeitig zeichnen.
Joomla Documentation schlägt folgende Code in das „Controller-Task-Verfahren“ eingesetzt werden, um die Informationen zur Verfügung stellen:
$view = $this->getView('model-a', 'html');
$view->setModel($this->getModel('model-a'), true);
$view->setModel($this->getModel('model-b'));
$view->display();
und rufen dann später auf den Modellen mit den in den Ansichten anzeigen Methode:
Diese in der Joomla-Dokumentation enthaltenen Anweisungen sind jedoch nicht ausreichend oder nicht kompatibel mit der Komponente, die beim Ausführen des bereitgestellten Joomla Hello World Tutorial-Lernprogramms oder von Komponenten aus dem Handbuch erstellt wurde y verwendetes und beliebtes Tool zum Erstellen von Komponenten. Entweder lädt die Komponente die Seite nicht, wenn sie aufgerufen wird, oder sie gibt die Daten nicht einfach mit einer einfachen Kopie an die Ansicht weiter und fügt sie in einen der mehreren Controller ein, die vom Komponenten-Ersteller oder vom Joomla Hallo Welt-Lernprogramm erstellt wurden.
Wie kann ich mehrere Modelle in derselben Ansicht für eine Joomla 3.X-Komponente aufrufen?
Sie können jedes Modell innerhalb der Ansicht aufrufen, indem Sie $ modell = JModel :: getInstance ('MODEL_NAME', 'COMPONENT_NAME') verwenden; $ items = $ modell-> getItems(); Die Verwendung der Syntax -> get ('items') ist nur in einer Ansicht gültig (da get() eine Methode der View-Klasse ist) –
@Amit Ray 'JModel' funktioniert nicht, aber' JModelLegacy' funktioniert mit Joomla 3.5.1 . Wenn ich 'JModel' verwende, erhalte ich den folgenden Fehler in meinen Serverprotokollen:' PHP Fataler Fehler: Aufruf zu undefinierter Methode JModel :: getInstance() in/var/www/html/components/com_komponentenname/views/multiviewname/view. html.php'. JModelLegacy wirft den Fehler nicht und die Seite wird ordnungsgemäß geladen. –
Sorry mein Fehler, ich habe den Legacy-Teil vergessen. Aber hat das das Problem gelöst? –