it-swarm.com.de

Verwendung von addtoolbar in zwei Komponenten mit demselben Parameter

Ich mache Fehlerbehebungen an bereits abgeschlossenen Joomla-Projekten und bin ein Anfänger von Joomla. Das Problem liegt bei der Schaltfläche JToolBarHelper addNew. Wir haben zwei Komponenten - Bestellung und Registrierung. Beide verwenden die Schaltflächen Hinzufügen und Bearbeiten im Frontend. Die für beide Komponenten geschriebene Funktion scheint in der Ansichtsdatei identisch zu sein.

protected function addToolBar()
    {
        if ($this->canDo->get('core.create')) 
        {
            JToolBarHelper::addNew('form.add', '_NEW');
        }
        if ($this->canDo->get('core.edit')) 
        {
            JToolBarHelper::editList('form.edit', '_EDIT');
        }
    }

Bei der Registrierung funktionieren beide Schaltflächen einwandfrei. Wenn Sie auf die Schaltfläche "Hinzufügen" klicken, wird die Seite aufgerufen

www.test.net/index.php?option=com_register&view=form&layout=test&lang=en

Was ich auch wissen muss, ist, wie dieser addNew Funktionsparameter arbeitet. Warum geht es zum Layout-Test (was bei Registerlayout richtig ist). Gibt es etwas, das ich vermisse? Mein eigentliches Problem ist, wenn ich auf den Hinzufügen-Button im Register klicke, wird die URL mit denselben Parametern wie oben angezeigt

www.test.net/index.php?option=com_order&view=form&layout=test&lang=en

und Fehler verursachen, dass Layout fehlt.

Hinweis: Die Layoutdatei "test" befindet sich in der Registerkomponente, ist jedoch nicht in der richtigen Reihenfolge.

1
Thejas

Sie müssen das Layout 'test' auch in der Komponente order am folgenden Ort einfügen: com_orders/views/form/tmpl/test.php

Dann wird dieser Fehler nicht gegeben.

Zweitens funktioniert die Funktion addNew wie folgt:

  1. In view.html.php: ist addNew eine Methode, die in der Kerndatei von Joomla in administrator/includes/toolbar.php Definiert ist.

    Weitere Informationen finden Sie unter: https://docs.joomla.org/JToolBarHelper

    Hier ist der erste Parameter der Name des Controllers und die in diesem Controller definierte Methode. Wie in Ihrem Code ist form der Name des Controllers und add die darin definierte Aufgabe/Funktion. Nun, add and edit Sind Kernaufgaben, daher ist es nicht erforderlich, dass sie in Ihrer Controller-Datei vorhanden sind. Es wird standardmäßig verwendet.

  2. In controller.php: Die Funktion add ist vorhanden, die als task bezeichnet wird, und leitet Sie zu der Seite weiter, auf der ein Formular erstellt wird, über das der Benutzer ein neues Formular einreichen kann in die Datenbank aufnehmen.

    Einzelheiten zu Tasks und Controllern finden Sie hier: https://docs.joomla.org/JController_and_its_subclass_usage_overview

Hoffe das hilft

1
Liz.