Lista dos tipos de colunas nos grids do aminhtml no Magento

Olá Galera,

Quando desenvolvemos nossos próprios módulos, na maioria das vezes precisamos criar uma tabela para salvar registros sobre algumas coisas. Quando temos que fazer algo mais administrativo possivelmente precisaremos também utilizar os Grids do Adminhtml do Magento para podermos mostrar uma lista de registros a partir de uma Collection de nosso módulo ou de qualquer outro módulo dentro do Magento. Seria muito bom que tivéssemos uma lista de todas as opções dos tipos de dados permitidos para renderizar as colunas de nossa tabela. Bom, vou lhes dar o caminho das pedras e disponibilizar aqui uma forma de encontrar todas as opções de renderers possíveis e ainda as classes que são instanciadas para cada uma:

Os tipos de renderers são necessários para renderizar colunas com tipos específicos em nosso grid, por exemplo, valores monetários, datas (muito importante neste caso), textos, opções, etc. Segue um exemplo com uma coluna do tipo number:

$this->addColumn('orders_count', array(
	'header'    => $this->__('Number of Orders'),
	'width'     => '100px',
	'sortable'  => false,
	'index'     => 'orders_count',
	'total'     => 'sum',
	'type'      => 'number'
));

Abram o arquivo appcodecoreMageAdminhtmlBlockWidgetGridColumn.php.

Neste arquivo podemos encontrar um método protegido chamado _getRendererByType() o qual contém um switch case com os todos os tipos de renderers possíveis.

switch ($type) {
	case 'date':
		$rendererClass = 'adminhtml/widget_grid_column_renderer_date';
		break;
	case 'datetime':
		$rendererClass = 'adminhtml/widget_grid_column_renderer_datetime';
		break;
	case 'number':
		$rendererClass = 'adminhtml/widget_grid_column_renderer_number';
		break;
	case 'currency':
		$rendererClass = 'adminhtml/widget_grid_column_renderer_currency';
		break;
	case 'price':
		$rendererClass = 'adminhtml/widget_grid_column_renderer_price';
		break;
	case 'country':
		$rendererClass = 'adminhtml/widget_grid_column_renderer_country';
		break;
	case 'concat':
		$rendererClass = 'adminhtml/widget_grid_column_renderer_concat';
		break;
	case 'action':
		$rendererClass = 'adminhtml/widget_grid_column_renderer_action';
		break;
	case 'options':
		$rendererClass = 'adminhtml/widget_grid_column_renderer_options';
		break;
	case 'checkbox':
		$rendererClass = 'adminhtml/widget_grid_column_renderer_checkbox';
		break;
	case 'massaction':
		$rendererClass = 'adminhtml/widget_grid_column_renderer_massaction';
		break;
	case 'radio':
		$rendererClass = 'adminhtml/widget_grid_column_renderer_radio';
		break;
	case 'input':
		$rendererClass = 'adminhtml/widget_grid_column_renderer_input';
		break;
	case 'select':
		$rendererClass = 'adminhtml/widget_grid_column_renderer_select';
		break;
	case 'text':
		$rendererClass = 'adminhtml/widget_grid_column_renderer_longtext';
		break;
	case 'store':
		$rendererClass = 'adminhtml/widget_grid_column_renderer_store';
		break;
	case 'wrapline':
		$rendererClass = 'adminhtml/widget_grid_column_renderer_wrapline';
		break;
	case 'theme':
		$rendererClass = 'adminhtml/widget_grid_column_renderer_theme';
		break;
	default:
		$rendererClass = 'adminhtml/widget_grid_column_renderer_text';
		break;
}

Um abraço,

Até a próxima!

Tiago Sampaio

Leave A Reply

Navigate