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?

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');

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.