Validação com problema

1 view
Skip to first unread message

Danilo Miguel

unread,
Oct 26, 2009, 12:33:41 PM10/26/09
to cake-...@googlegroups.com
Pessoal,

Estou iniciando um novo projeto. Fiz minha regras de validação nos Models, tudo funcionando perfeitamente. Uma delas, no Model Usuario, verifique se o usuário é único (isUnique). Porém, na hora de fazer login essa regra também é verificada (claro!). Assim, se o usuário é cadastrado ele gera erro.

Tem como "pular" alguma regra, em dado momento, como este por exemplo? Como fazer?

Danilo Miguel - www.dimiguel.com.br
E-mail/MSN: dimi...@gmail.com
Skype: dimiguel.com.br
+55 35 9123.7290

Edinei Luis Cipriani

unread,
Oct 26, 2009, 1:02:24 PM10/26/09
to cake-...@googlegroups.com
Olá amigo, essa regra vc aplica então no beforeSave, abrs.

Danilo Miguel

unread,
Oct 26, 2009, 1:03:24 PM10/26/09
to cake-...@googlegroups.com
É mesmo? Não sabia... risos...

Brincadeiras a parte, não é essa minha dúvida. Por exemplo, tenha essa validação:

            'email' => array(
                'rule1' => array(
                    'rule' => array('email', true),
                    'message' => 'Informe seu e-mail.'
                ),
                'rule2' => array(
                    'rule' => 'isUnique',
                    'message' => 'Este e-mail ja esta cadastrado.'
                )

Na hora do login, ele precisa verificar somente a primeira regra (rule1) e não a segunda, que é verificada quando do registro de novo usuário.

Sugestões?


Danilo Miguel - www.dimiguel.com.br
E-mail/MSN: dimi...@gmail.com
Skype: dimiguel.com.br
+55 35 9123.7290


2009/10/26 Edinei Luis Cipriani <phpe...@gmail.com>

Marcio Trindade

unread,
Oct 26, 2009, 1:04:33 PM10/26/09
to cake-...@googlegroups.com
Não sei como você aplicou isso, mas eu sempre usei desta forma.

AppModel

  function unique($data) {
    return $this->isUnique(array(key($data)=>current($data)));
  }

UserModel
var $validate = array(
'username' => array(
'unique'=>array(
'rule'=>array('unique', 'name'),
'message'=>'This username is already in use.  Please select another.'
)
),
);


Espero que ajude

Marcio Trindade
http://marciotrindade.com


2009/10/26 Edinei Luis Cipriani <phpe...@gmail.com>
Olá amigo, essa regra vc aplica então no beforeSave, abrs.

Gabriel Gilini

unread,
Oct 26, 2009, 2:17:31 PM10/26/09
to cake-...@googlegroups.com
O Cake já tem uma função de isUnique builtin, não há a necessidade de
criar outra.

2009/10/26 Marcio Trindade <marciot...@gmail.com>:
--
Gabriel Gilini

www.usosim.com.br
gab...@usosim.com.br

Gabriel Gilini

unread,
Oct 26, 2009, 2:18:12 PM10/26/09
to cake-...@googlegroups.com
Danilo, o que você está fazendo no login? Salvando algo no banco de dados?
Porque a validação do modelo só se dá no momento da inserção/update de
dados no banco.

2009/10/26 Danilo Miguel <dimi...@gmail.com>:

Roger

unread,
Oct 27, 2009, 7:26:56 PM10/27/09
to Cake PHP Português
Umas das soluções: só utilizar determinada regra na hora em que
estiver ocorrendo o cadastro.

'on' => 'created':



'email' => array(
'rule1' => array(
'rule' => array('email', true),
'message' => 'Informe seu e-mail.'
),
'rule2' => array(
'rule' => 'isUnique',
'message' => 'Este e-mail ja esta cadastrado.'
==> 'on' => 'created'
)



On 26 Out, 14:33, Danilo Miguel <dimig...@gmail.com> wrote:
> Pessoal,
>
> Estou iniciando um novo projeto. Fiz minha regras de validação nos Models,
> tudo funcionando perfeitamente. Uma delas, no Model Usuario, verifique se o
> usuário é único (isUnique). Porém, na hora de fazer login essa regra também
> é verificada (claro!). Assim, se o usuário é cadastrado ele gera erro.
>
> Tem como "pular" alguma regra, em dado momento, como este por exemplo? Como
> fazer?
>
> Danilo Miguel -www.dimiguel.com.br
> E-mail/MSN: dimig...@gmail.com

Roger

unread,
Oct 27, 2009, 2:01:04 PM10/27/09
to Cake PHP Português
Companheiro,

no modelo você pode definir, se a regra vai ser aplicada quando o
registro está sendo inserido, atualizado ou os dois.
Utilizando a tag 'on'.

Bom, ainda não utilizei esse recurso, mas, coincidentemente, li sobre
isso essa semana, e me parece que é isso que você está querendo!

ex:

'email' => array(
'rule1' => array(
'rule' => array('email', true),
'message' => 'Informe seu e-mail.'
),
'rule2' => array(
'rule' => 'isUnique',
'message' => 'Este e-mail ja esta cadastrado.'
==> 'on' => 'create' <==
)
)
http://book.cakephp.org/view/134/Core-Validation-Rules

Outra coisa, espero que você esteja validando os dados na
controladora.

http://book.cakephp.org/view/410/Validating-Data-from-the-Controller



http://www.rogeriogarcia.net


On 26 out, 16:18, Gabriel Gilini <gabr...@usosim.com.br> wrote:
> Danilo, o que você está fazendo no login? Salvando algo no banco de dados?
> Porque a validação do modelo só se dá no momento da inserção/update de
> dados no banco.
>
> 2009/10/26 Danilo Miguel <dimig...@gmail.com>:
>
>
>
> > É mesmo? Não sabia... risos...
>
> > Brincadeiras a parte, não é essa minha dúvida. Por exemplo, tenha essa
> > validação:
>
> >             'email' => array(
> >                 'rule1' => array(
> >                     'rule' => array('email', true),
> >                     'message' => 'Informe seu e-mail.'
> >                 ),
> >                 'rule2' => array(
> >                     'rule' => 'isUnique',
> >                     'message' => 'Este e-mail ja esta cadastrado.'
> >                 )
>
> > Na hora do login, ele precisa verificar somente a primeira regra (rule1) e
> > não a segunda, que é verificada quando do registro de novo usuário.
>
> > Sugestões?
>
> > Danilo Miguel -www.dimiguel.com.br
> > E-mail/MSN: dimig...@gmail.com
> > Skype: dimiguel.com.br
> > +55 35 9123.7290
>
> > 2009/10/26 Edinei Luis Cipriani <phpedi...@gmail.com>
>
> >> Olá amigo, essa regra vc aplica então no beforeSave, abrs.
> >> Em 26/10/2009, às 14:33, Danilo Miguel escreveu:
>
> >> Pessoal,
>
> >> Estou iniciando um novo projeto. Fiz minha regras de validação nos Models,
> >> tudo funcionando perfeitamente. Uma delas, no Model Usuario, verifique se o
> >> usuário é único (isUnique). Porém, na hora de fazer login essa regra também
> >> é verificada (claro!). Assim, se o usuário é cadastrado ele gera erro.
>
> >> Tem como "pular" alguma regra, em dado momento, como este por exemplo?
> >> Como fazer?
>
> >> Danilo Miguel -www.dimiguel.com.br
> >> E-mail/MSN: dimig...@gmail.com
> >> Skype: dimiguel.com.br
> >> +55 35 9123.7290
>
> --
> Gabriel Gilini
>
> www.usosim.com.br
> gabr...@usosim.com.br
Reply all
Reply to author
Forward
0 new messages