web-dev-qa-db-fra.com

Comment utiliser correctement view.raw.php

J'essaie d'ajouter un bouton personnalisé JToolbar à la vue Liste pour exporter le contenu de la liste vers Excel. J'ai créé une nouvelle tâche dans mon contrôleur de liste pour rendre la classe de vue brute dans un fichier appelé view.raw.php. Cependant, je ne peux pas obtenir le contenu pour charger uniquement les données brutes.

J'ai copié le code du contrôleur approprié à partir du contrôleur com_banners tracks.raw.php

Méthode du contrôleur:

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();
    }
}

Et une méthode d'affichage simple dans mon fichier view.raw.php:

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

Ceci affiche "Test" mais charge également le modèle.

J'ai essayé d'utiliser $document->setType('Raw') mais cela me donne un

Impossible de charger la classe de rendu

erreur.

La raison en est qu'il cherche

bibliothèques/joomla/document/raw/renderer/modules.php

qui n'existe pas.

Peut-être que je m'y prends mal, mais comment dois-je le faire correctement?

7
doovers

Vous devez spécifier le type de document dans l'appel URL avec format=raw. Joomla chargera alors automatiquement le view.raw.php fichier. Vous n'avez même pas besoin d'un contrôleur spécial pour cela.

Pour créer le bouton de la barre d’outils, vous pouvez utiliser ceci:

    $bar = JToolBar::getInstance('toolbar');
    $bar->appendButton('Custom', '<button onclick="window.location.href = \'http://www.google.com\';">Export</button>', 'export');
5
Bakual