Estou tentando adicionar um botão JToolbar
personalizado à minha exibição de lista que exportará o conteúdo da lista para o Excel. Criei uma nova tarefa no meu controlador de lista para renderizar a classe de exibição bruta em um arquivo chamado view.raw.php. No entanto, não consigo que o conteúdo carregue apenas os dados brutos.
Copiei o código do controlador relevante do controlador com_banners tracks.raw.php
Método do controlador:
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();
}
}
E um método simples de exibição de teste no meu arquivo view.raw.php:
public function display($tpl = null)
{
echo "Test";
}
Isso exibe "Teste", mas também carrega o modelo.
Eu tentei usar $document->setType('Raw')
mas isso está me dando uma
Não foi possível carregar a classe do renderizador
erro.
A razão para isso é que ele está procurando
bibliotecas/joomla/document/raw/renderer/modules.php
que não existe.
Talvez eu esteja fazendo isso da maneira errada, mas como devo fazer isso corretamente?
Você precisa especificar o tipo de documento na chamada URL com format=raw
. O Joomla carregará automaticamente o view.raw.php
Arquivo. Você nem precisa de um controlador especial para isso.
Para criar o botão da barra de ferramentas, você pode usar este:
$bar = JToolBar::getInstance('toolbar');
$bar->appendButton('Custom', '<button onclick="window.location.href = \'http://www.google.com\';">Export</button>', 'export');