Hinzufügen der Standardsymbolleiste von Joomla auf einer Seite mit der Komponentenansicht

10

Ich entwickle eine MVC-Komponente für Joomla 2.5 und 3. In vielen Komponenten wurden die Standardbefehlsschaltflächen von Joomla wie Neu, Bearbeiten, Veröffentlichen, Papierkorb und Optionen oben auf der Einstellungsseite auf der Administrationsseite hinzugefügt. Z.B. Wenn man auf die Seite Komponenten-> Weblinks-> Links geht, spreche ich über diese Befehlsschaltflächen oben rechts.

Wie füge ich diese Befehlsschaltflächen auf der Einstellungsseite meiner Komponente hinzu? Wenn Sie darauf klicken, wird die entsprechende Aktion ausgeführt und die entsprechende Ansicht angezeigt. Wenn ich beispielsweise auf die Schaltfläche "Neu" klicke, wird die Ansicht zum Hinzufügen von Einträgen meiner MVC-Komponente so angezeigt, wie sie ist.

Wie könnte ich also voll funktionsfähige Joomla-Befehlsschaltflächen auf der Einstellungsseite meiner Komponente auf der Administrationsseite hinzufügen?

dev-m
quelle

Antworten:

12

Die beste Vorgehensweise besteht darin, die addToolBar()Methode in Ihrer View- JToolBarHelperKlasse zu erstellen und dann mit class Befehlsschaltflächen zu erstellen:

protected function addToolBar()
{
  JToolBarHelper::addNew('yourcontroller.add');
  JToolBarHelper::editList('yourcontroller.edit');
}

Diese rufen also die Aufgabe / Funktion "add" / "edit" in Ihrem angegebenen Controller auf. Rufen $this->addToolBar()Sie dann einfach die display()Methode Ihrer Ansicht auf .

Referenz Erstellen einer Symbolleiste für Ihre Komponente

Dmitry Rekun
quelle
Ich habe nur eine Controller-Datei controller.php in meiner Komponente und darin habe ich eine Funktion, function add() { JRequest::setVar('view', 'entry'); JRequest::setVar('layout', 'form'); parent::display(); }also habe ich in meiner Datei view.html.php JToolBarHelper :: addNewX ('controller.add') hinzugefügt; dann erscheint eine neue Schaltfläche, aber wenn sie angeklickt wird, wird sie nicht in mein Ansichtsformular verschoben, sondern fügt der URL ein # hinzu
dev-m
Versuchen Sie wegzulassen controller.task-JToolBarHelper::addNewX();
Dmitry Rekun
Nur JToolBarHelper :: addNewX () hinzugefügt; funktioniert aber nicht.
Dev-M
Dann müssen Sie einen richtigen Controller unter controllersVerzeichnis erstellen . Siehe Hinzufügen von Backend-Aktionen
Dmitry Rekun
5

Sie müssen sicherstellen, dass die Ansicht, in der die Schaltflächen angezeigt werden, ein Formular zum Senden enthält. Der Formularname sollte adminForm sein. Das Formular sollte auch ein verstecktes Feld mit dem Namen task und das dynamisch generierte Token enthalten. Ich kann mich nicht an die API erinnern, aber so etwas wie JHtml::_('form.token');(jemand korrigiert dies bitte, wenn ich mich irre)

Das macht den Trick.

Mathew Lenning
quelle
Das Problem, das ich zuvor herausgefunden habe, war, dass ich stattdessen den Formularnamen als Adminform verwendet habe. AdminForm.it scheint bei Joomla zwischen Groß- und Kleinschreibung zu unterscheiden!
Dev-M
Es ist eher eine JavaScript-Sache als eine Joomla-spezifische. Wenn Sie auf die Schaltflächen klicken, lösen Sie tatsächlich eine JS-Formularfunktion zum Senden aus. Wenn das Formular also nicht gefunden werden kann, schlägt es leise fehl.
Mathew Lenning