I just wanted a more declarative sort of approach. :) I don't know if  
I'll use it myself though :)



On May 5, 2008, at 6:14 AM, Yariv Sadan wrote:

>
> On Tue, Apr 22, 2008 at 4:04 AM, Dmitrii Dimandt  
> <[EMAIL PROTECTED]> wrote:
>> Let's say that you have these fields in your form:
>> - login
>> - password
>> - repeat_password
>> - repeat_password_once_more  (see the example below)
>>
>> You need to see if login exists, if passwords exist and that they  
>> match.
>> Validation functions provided by erlyweb can't check if two fields  
>> match or
>> not.
>
> Sorry for the belated reply. I recently got back from vacation and
> haven't been on top of my emails.
>
> I think it's just as easy to do this test outside of the validation
> function. This is what I've been doing:
>
> {[Username, Password, Password1...], Errs} =
>  erlyweb_forms:validate(A, ["username", "password", "password1"],
>    fun(Field, Val) -> ... end),
>
> Errs1 = if Password =/= Password1 ->
>   [password_match_error | Errs];
>  true ->
>   Errs
>  end,
>
> ...
>
> Yariv
>
>
>
>>
>> I've started working on a more generic function that would allow  
>> passing
>> several rules to validate a field, several functions etc.
>>
>> I'm not too good at programming *blush* but here's what the  
>> function does so
>> far:
>>
>> validate(A, [{password, {'=', password_repeat}}])
>> %% [] if everything is ok
>> %% [[password, {not_equal, password_repeat}]]
>>
>> % --------------------------------
>> % --------------------------------
>>
>>
>> validate(A, [{password, [{'=', password_repeat},
>>                         {'=', password_repeat_once_more}]
>>            }])
>> %% [] if everything is ok
>> %% [[password, [{not_equal, password_repeat},
>>                {not_equal, password_repeat_once_more}]]]
>> % --------------------------------
>> % --------------------------------
>>
>>
>> validate(A, [{password, [{'=', password_repeat},
>>                         {'=', password_repeat_once_more}]
>>            }, {login}])
>>
>> %% [] if everything is ok
>> %% [[password, [{not_equal, password_repeat},
>>                {not_equal, password_repeat_once_more}]],
>>    [login, absent]
>>   ]
>>
>>
>> What I want t achieve in the end is allowing passing such  
>> constructs as
>> rules:
>>
>> - Functions
>> validate{A, [{FieldName, module:function/2}])
>> %% where function accepts A and FieldName
>> - Function and value to check against
>> validate(A, [{FieldName, {module:function/3, Value}}])
>> %% where function accepts A, FieldName and Value
>> - A slew of operators such as =, =/=, <, <=, >, >= to check against  
>> other
>> fields or values
>> validate(A, [{FieldName, {'=', FieldName2}}])
>> validate(A, [{FieldName, {'=', "some value"}}])
>>
>> I'm attaching whatever I have so far to this message. It's a  
>> horrible,
>> horrible mess :) So far you can only validate against to rules:
>> validate(A, [{FieldName}]) %% if a field exists
>> validate(A, [{FieldName, {'=', FieldName2}}]) %% if a field equals  
>> some
>> other field
>>
>> Of course, you re not limited to the number of fields or the number  
>> of rules
>> that are being passed in:
>> validate(A, [
>>              {FieldName1},
>>              {FieldName2, {'=', FieldName3}},
>>              {FieldName4, [
>>                             {'=', FieldName3},
>>                             {'=', FieldName4},
>>                             {'=', FieldName5}
>>                           ]},
>>            ]
>> )
>>
>>
>> I'll be glad to hear your input on this
>>
>>
>>>
>>
>
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"erlyweb" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/erlyweb?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to