Vou tentar exemplificar aqui, mostrando como eu faço hoje. Não sei se desse
jeito é o melhor,mas achei bem prático........espero que alguém melhore a
minha idéia...hehehe


## CONTROLLER ##
-- nesse metodo eu passo para a view as variaveis que irão compor o
formulário--
function montaPagina() {
    $page['campo1'] = "algum valor";
  $page["campo2"] = "outro valor";
  $this->load->vars($page);
  $content["content"] = $this->load->view("formulario", null, TRUE);
  $this->load->view("layout", $content);
}

-- esse método recebe a requisição do formulário e redireciona para o método
correspondente --
function formController() {
    if (isset($_POST['btnSalvarFormulario'])) {
        $this->salvarFormulario();
    } elseif (isset($_POST['btnFazOutraCoisa'])) {
            $this->fazOutraCoisaNoFormulario();
    }
}

function salvarFormulario() {
    if ($this->fuModel->validarForm()) {
        -- executa ação para salvar os dados --
    } else {
            -- faça qualquer outra coisa --
    }
    -- agora eu redireciono para a pagina novamente --
    $this->montaPagina();
}

-- Essa função realiza outra ação qualquer --
function fazOutraCoisaNoFormulario() {
    if ($this->fuModel->validaOutraCoisaQualquer()) {
        -- executa a ação necessária --
    } else {
            -- faça outra coisa --
    }
    -- redireciono para a pagina novamente --
    $this->montaPagina();
}
## FIM CONTROLLER ##

## MODEL ##

class Model_My extends Model {

     -- Aqui eu coloco todos os campos do formulário que terão que ser
tratados ou formatados
     $FIELDS = array('campo1'=>'Campo 01', 'campo2'=>'Campo 02', etc....)

    function __construct() {
        parente::model();
        -- Configurando os delimitadores da mensagem de erro --
        $this->validation->set_error_delimiters('<div>', '</div>');
         $this->validation->set_fields($this->FIELDS);
    }

    -- Vamos supor que eu quero tratar nessa validação, que o campo1 e o
campo2 sejam obrigatórios--
    function validaForm() {
        $regras = array('campo1'=>'required', 'campo2'=>'required');
        $this->validation->set_rules($regras);
         return $this->validation->run();
    }

    -- Nessa validação, só quero tratar que o campo1 tenha pelo menos 10
caracteres, e o campo2 seja obrigatório --
    function validaOutraCoisaQualquer() {
        $regras = array('campo1'=>'min_length[10]', 'campo2'=>'required');
        $this->validation->set_rules($regras);
         return $this->validation->run();
    }
}

## FIM MODEL ##

é assim que eu faço. Nesse caso quando o formulário executar o primeiro
método, ele irá ter as validaçãoes do método do model "validarForm", e
quando executar o segundo, ele irá ter as validaçãoes do segundo método.
O que vc tem que prestar a atenção é na hora da definição das regras, cada
regra tem que ficar dentro do método correspondente.
é isso, espero ter ajudado!

Falou

2008/7/7 Carlendario <[EMAIL PROTECTED]>:

> Gostei muito da ideia só que no meu caso eu faço assim eu tenho um
> método no controller cadastrar que cria combos e processa tudo que é
> necessário para abrir o form. Após o usuário terminar de preencher
> quando ele postar eu envio ele para outro método chamado Add.
>
> Eu fiz como vc sugeriu coloquei tudo em uma função no model validaform
> só que como tudo isso fica em duas funçõea diferentes como faço para o
> view carregado com a função cadastrar mostrar as menssagens que a
> validação fez?
>
> 2008/6/20 Paulo Balzi <[EMAIL PROTECTED]>:
> > Eu faço de outra maneira.
> > No meu caso eu coloquei todas as regras no model, então eu criei métodos
> > específicos para cada conjunto de regra q eu necessito.
> > Por exemplo:
> >
> > 1º método:
> > function validarForm1() {
> >     -- aqui eu defino as regras q eu quero --
> >    return $this->validation->run();
> > }
> >
> > 2º método:
> > function validarForm2() {
> >     -- aqui eu defino as regras q eu quero --
> >    return $this->validation->run();
> > }
> >
> >
> > aí pra cada formulário eu envio para um método do controller q eu quero,
> no
> > primeiro caso, se eu quero usar o validarForm1, teria um método do
> > controller da seguinte maneira:
> >
> > function submitForm1() {
> >    if ($this->mymodel->validarForm1()) {
> >         -- executa a ação --
> >    } else { -- faça outra coisa -- }
> > }
> >
> > e se eu quiser usar a outra validação, criaria outro método no controller
> > fazendo a mesma coisa, mas chamando o submitForm2.
> >
> > mais ou menos assim.....espero ter ajudado.
> >
> >
> > 2008/6/19 Samarone Lopes <[EMAIL PROTECTED]>:
> >>
> >> Opa,
> >>
> >> Cara faça assim, coloque um campo hidden em cada form, separa forms em
> >> views e depois dentro do controller faca um switch tipo:
> >>
> >> switch ( $step ): // step eh o campo hidden
> >> case 1:
> >>           registra regras de validacao form 1;
> >>           if ( valida === FALSE ) {
> >>                   carrega view passo 2
> >>                   return;
> >>           } else {
> >>                   carrega view passo 1
> >>           }
> >> case 2:
> >>           registra regras de validacao form 2;
> >>           if ( valida === FALSE ) {
> >>                   carrega view passo 3
> >>                   return;
> >>           } else {
> >>                   carrega view passo 2
> >>           }
> >> case 3:
> >>           registra regras de validacao form 3;
> >>           if ( valida === FALSE ) {
> >>                   guarda no banco
> >>                   carrega view de boas vindas
> >>                   return;
> >>           } else {
> >>                   carrega view passo 3
> >>           }
> >> endswitch;
> >>
> >> Pensei aqui rapidamente, mas acho que pode ser essa a solucao.
> >>
> >> T+
> >>
> >> 2008/6/17 <[EMAIL PROTECTED]>:
> >>>
> >>> Boa noite Pessoal,
> >>> Sou novato no desenvolvimento com CI e estou com algumas dúvidas que
> não
> >>> consegui resolver ;(
> >>>
> >>> È o seguinte, tenho um formulario em 3 passos....
> >>> 1º passo - campo1, campo 2, campo 3.... [post]
> >>> 2º passo - campo4, campo 5, campo6.... [post]
> >>> 3º passo - Bem vindo fulano de tal....joga no banco e pronto!
> >>>
> >>> Cada passo um formulário...
> >>> Só que quando eu vou validar o primeiro formulario (1º passo) com os
> >>> dados válidos, como eu faço para iniciar o segundo formulario (2ª
> passo) sem
> >>> a interferencia da validação do passo2 ? Se eu abro o a view do passo 1
> e
> >>> coloco form_open passo2... O controler do passo2 emite erro que os
> 'dados do
> >>> passo 2' estão em brancos etc... (confome a regra do passo 2)
> >>>
> >>> Como faço para fazer esse procedimento passo a passo, ambos com
> >>> validação?
> >>>
> >>> Se alguem puder me add no msn, agradeceria..
> >>> [EMAIL PROTECTED]
> >>> Um abraço!
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> _______________________________________________
> >>> Lista mailing list
> >>> [email protected]
> >>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> >>>
> >>
> >>
> >>
> >> --
> >> Samarone Lopes - (31) 84833845
> >> _______________________________________________
> >> Lista mailing list
> >> [email protected]
> >> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> >>
> >
> >
> >
> > --
> > Paulo Balzi
> > _______________________________________________
> > Lista mailing list
> > [email protected]
> > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> >
> >
>
>
>
> --
> Um abraço
> Carlinhos
>
> contatos:
> IM [EMAIL PROTECTED]
> Cel 8824 3858
>
> _______________________________________________
> Lista mailing list
> [email protected]
> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>



-- 
Paulo Balzi
_______________________________________________
Lista mailing list
[email protected]
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

Responder a