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
---------------------------

Responder a