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