Operações em lote em tabelas customizadas através do Views Bulk Operations
O módulo Views Bulk Operations (VBO) é uma ferramenta indispensável no ecossistema Drupal para realizar ações em massa diretamente a partir do resultado de uma View. Tradicionalmente utilizado para operações em nós, usuários e comentários, um dos usos mais avançados é integrá-lo com tabelas customizadas definidas por módulos próprios ou contribuídos.
Se você precisa executar algum tipo de alteração em lote em dados que não são entidades padrão, a extensão do VBO para tabelas personalizadas é a solução ideal. Vamos ver um passo a passo simplificado para implementar essa integração no Drupal 7.
1. Expondo a tabela para Views
O primeiro passo é garantir que sua tabela customizada seja "visível" para o sistema de Views. Isso é feito através do hook hook_views_data(), onde você define a tabela base, suas colunas e relacionamentos.
function meu_modulo_views_data() {
$data = [];
$data['minha_tabela_customizada']['table']['group'] = 'Meu Módulo';
$data['minha_tabela_customizada']['table']['base'] = [
'field' => 'id',
'title' => 'Minha Tabela Customizada',
'help' => 'Registros da minha tabela externa.',
];
// Definição dos campos…
return $data;
}
2. Criando a operação personalizada
Com a tabela exposta, crie um plugin de operação para o VBO. Você deve implementar hook_views_bulk_operations_operation_info() para registrar seu callback.
function meu_modulo_views_bulk_operations_operation_info() {
return [
'minha_operacao_personalizada' => [
'label' => t('Minha Operação em Lote'),
'callback' => 'meu_modulo_minha_operacao_callback',
],
];
}
function meu_modulo_minha_operacao_callback($objects, $options = []) {
foreach ($objects as $object) {
// Lógica da operação: atualizar um campo status, por exemplo.
db_update('minha_tabela_customizada')
->fields(['status' => 1])
->condition('id', $object->id)
->execute();
}
drupal_set_message(t('Operação concluída em @count registros.', ['@count' => count($objects)]));
}
3. Configurando a View
Crie uma View cuja base seja sua tabela customizada. Adicione o campo "Operações em massa (VBO)" e selecione a operação que você acabou de definir. A submissão do VBO se encarregará de executar o callback para os registros selecionados, utilizando o loteamento padrão do módulo para evitar timeouts.
Considerações finais
Integrar o Views Bulk Operations com tabelas customizadas é um padrão de design extremamente poderoso para sites Drupal que gerenciam dados próprios, permitindo que administradores realizem manutenção pesada com poucos cliques. Embora o exemplo utilize db_update, a lógica pode ser qualquer integração: chamadas a APIs externas, cálculos complexos ou disparo de filas.
Gostou do artigo? Confira mais conteúdos sobre Drupal e Views aqui no site.