Rafael, eu resolvi esse problema fazendo o seguinte:
1. extendi a classe Form_Validation do CI
2. e criei o meu método para repopular o formulário
3. explicação do funcionamento:
- primeiro ele verifica se o formulário já foi submetido
- se sim ele pega o valor do formulário e insere novamente nos campos
- senão, ele recupera o valor do banco de dados, sfc.
- e ainda existe a possibilidade de adicionar um valor padrão para o
campo, e todo vez q um novo formulário for aberto, o valor será inserido
/**
*
* Atribui o valor do campo no formulário. Ocorre tanto num erro de
envio ou recuperando informações no banco de
* dados
* @param string $field nome do campo no formulário
* @param array $resultSet retorno da consulta
* @param string $default valor padrão para o campo no formulário
* @param boolean $isBool identifica se o campo no formulário receberá
somente valores booleanos (para os campos
* do tipo checkbox e radiobutton )
*/
public function repopulateForm($field, $resultSet, $default = '',
$isBool = false)
{
if ( isset($this->_field_data[$field]) ) {
return $this->_field_data[$field]['postdata'];
} elseif ( !is_null($resultSet) ) {
/* recupera o prefix da tabela -- "isso foi feito devido a minha
necessidade - toda campo das tabelas possui um prefix específico*/
foreach ($resultSet as $key=>$value) {
$tablePrefix = substr($key, 0, strpos($key, '_'));
break 1;
}
/* pega o valor do banco de dados */
$fd = "{$tablePrefix}_{$field}";
$ret = $resultSet->$fd;
/* se o campo for do tipo radio ou checkbox */
if ( $isBool === true ) {
/* utilizo postgres e ele retorna t pra true e f para false
*/
return ($ret == 't') ? (true) : (false);
} else {
return $ret;
}
} else {
/* possibilidade de adicionar um valor padrõa para o campo */
return $default;
}
}
espero ter ajudado.
--
Paulo Balzi
_______________________________________________
[email protected]
http://www.codeigniter.com.br
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
---------------------------
Oportunidade de negócio
http://www.franquiasargohost.net
---------------------------