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