Eu criei um relatório personalizado. O relatório possui um número significativo de campos necessários para quando é exportado no formato CSV.
O que estou tentando descobrir é se há uma maneira de omitir a renderização de alguns dos campos na grade de front-end. A maioria deles não é realmente importante para o processo de filtragem no administrador e é usada apenas quando o relatório é baixado para análise adicional fora do Magento.
Eu esperaria que esse tipo de funcionalidade residisse na classe de grade, pois é isso que gera a grade real e, mais tarde, o CSV exportado, mas não vejo nada que pareça que lide com a visibilidade.
Antes de entrar e substituir os métodos nesta classe para o nosso relatório personalizado, existe uma maneira menos conhecida de realizar isso que é mais fácil do que adicionar algum tipo de propriedade "showInGrid" por meio da matriz de propriedades addColumn?
TL, DR, existe uma maneira fácil de exportar campos (por exemplo, CSV ou XML), mas omitidos da grade administrativa?
Respostas:
Crie uma definição de bloco separada - por exemplo, duplique o bloco Grid para outro bloco específico para o seu CSV; Eu chamaria isso em
Csvgrid.php
vez deGrid.php
- conteria toda a mesma funcionalidade que o normalGrid.php
, mas omitir a coluna.No seu controlador:
Ao duplicar o Grid, coloque
Csvgrid.php
no mesmo diretório físico,Grid.php
mas renomeie-o de acordo - não esqueça de alterar o nome da classe!Editar:
Acontece que
Mage_Adminhtml_Block_Widget_Grid
tem um método chamadoremoveColumn
- definido como:Meu palpite é que, porque
Mage_Adminhtml_Block_Report_Grid
estende,Mage_Adminhtml_Block_Widget_Grid
ele herda esse método e deve poder ser usado. Nesse caso, eu criaria um novo bloco Grid e estenderia o Grid em que está o seu relatório atual. A partir daí, você pode usar seu próprioprepareColumns
método, chamarparent::_prepareColumns()
e chamarremoveColumn
.Boa sorte.
fonte
_prepareColumns
que fará referência a um índice que não existe mais na coleção. Embora exista um método 'removeColumn', eu diria estender a classe Grid e chamarparent::_prepareColumns()
, em seguida, injetar seu próprioremoveColumns
método.Você pode usar set
column_css_class
eheader_css_class
quantono-display
à coluna que deseja ocultar. Isso ocultará sua coluna da grade do administrador. No entanto, esta coluna estará presente no csv ou xml exportado.fonte
Existe um método
_afterLoadCollection()
no Mage / Adminhtml / Block / Widget / Grid.php que pode ser substituído para remover / adicionar colunas para exportação ou exibição$this->_isExport
.OBSERVAÇÃO: adicionar isso ao
_prepareCollection()
não funcionará, pois os filtros da coleção não serão enviados, resultando em toda a coleção despejada menos qualquer filtragem.fonte
Se você só precisa desses campos para o relatório, por que não os adiciona apenas ao relatório? Os blocos de grade têm o método getCollection, que retornará o modelo de coleção e você poderá adicionar os campos necessários para o seu relatório.
fonte
A maneira mais fácil de fazer isso é
Retorne ao arquivo Grid.php (app / core / Mage / Adminhtml / Block / Sales / Order / Grid.php)
adicione sua coluna personalizada como fiz abaixo:
também fez alterações
isso significa que precisamos adicionar nosso valor personalizado da coluna à coleção. Para isso, precisamos juntar nossa tabela com a tabela de coleta de grade.
Agora vá e verifique o back-end, exporte os pedidos. haverá nossa coluna personalizada adicionada.
fonte