Ao ensinar CodeIgniter no curso de PHP, surgiu uma dúvida interessante ao usarmos a classe HTMLTable para montar uma tabela automagicamente com os dados de uma consulta ao banco de dados: seria possível, ao montar a tabela, já criar links em endereços de email que estejam gravados no banco (por exemplo)?

A função auto_link() do helper URL permite que se faça isso com uma string, mas não existe uma maneira de passar uma função para o método generate() da classe.

Como o framework é disponibilizado com os fontes, basta alterar o funcionamento da classe e incluir a função auto_link() no método generate():

[sourcecode language='php']
foreach($row as $cell) {
$out .= $this->template['cell_'.$name.'start'];
if ($cell == “”) {
$out .= $this->empty_cells;
} else {
// é importante testar se o helper URL está carregado
$out .= function_exists(‘auto_link’) ? auto_link($cell) : $cell;
}
$out .= $this->template['cell_'.$name.'end'];
}
[/sourcecode]

A alteração deve ser feita na linha 270 do arquivo system/libraries/Table.php na instalação do CodeIgniter.

, ,