Wie soll ich view.raw.php richtig verwenden?

7

Ich versuche, JToolbarmeiner Listenansicht eine benutzerdefinierte Schaltfläche hinzuzufügen , die den Listeninhalt nach Excel exportiert. Ich habe in meinem Listen-Controller eine neue Aufgabe erstellt, um die Raw-View-Klasse in einer Datei namens view.raw.php zu rendern. Ich kann den Inhalt jedoch nicht dazu bringen, nur die Rohdaten zu laden.

Ich habe den entsprechenden Controller-Code von com_banners tracks.raw.php controller kopiert

Controller-Methode:

public function exportToExcel()
{
    // Get the document object.
    $document   = JFactory::getDocument();
    $vName      = 'Mylist';
    $vFormat    = 'raw';

    // Get and render the view.
    if ($view = $this->getView($vName, $vFormat))
    {
        // Get the model for the view.
        $model = $this->getModel($vName);

        // Push the model into the view (as default).
        $view->setModel($model, true);

        // Push document object into the view.
        $view->document = $document;

        $view->display();
    }
}

Und eine einfache Testanzeigemethode in meiner view.raw.php-Datei:

public function display($tpl = null)
{
   echo "Test";
}

Dies zeigt "Test" an, lädt aber auch die Vorlage.

Ich habe es versucht, $document->setType('Raw')aber das gibt mir eine

Renderer-Klasse kann nicht geladen werden

Error.

Der Grund dafür ist, dass es sucht

Bibliotheken / joomla / document / raw / renderer / modules.php

was nicht existiert.

Vielleicht gehe ich falsch vor, aber wie soll ich das richtig machen?

doovers
quelle

Antworten:

5

Sie müssen den Dokumenttyp im URL-Aufruf mit angeben format=raw. Joomla lädt die view.raw.phpDatei dann automatisch . Sie brauchen dafür nicht einmal einen speziellen Controller.

So erstellen Sie die Symbolleistenschaltfläche:

    $bar = JToolBar::getInstance('toolbar');
    $bar->appendButton('Custom', '<button onclick="window.location.href = \'http://www.google.com\';">Export</button>', 'export');
Bakual
quelle
Aber wie übergebe ich die URL an die Symbolleistenschaltfläche? AFAIK ist nicht möglich, Sie können nur den Namen und die Aufgabe des Controllers angeben.
Dmitry Rekun
Die Verwendung JToolbarHelperist nicht möglich, sollte aber möglich sein, JToolbar->appendButton()wie wir es für den Batch-Button tun. Ich werde überprüfen :)
Bakual