Re: possible bug? validation successful even though required fields are not empty

2008-05-14 Thread Marc Schuetze

sorry Chris,
you are absolutely correct.
I misunderstood what jonkee posted.

On Wed, May 14, 2008 at 9:06 PM, Chris Hartjes <[EMAIL PROTECTED]> wrote:
>
> On Wed, May 14, 2008 at 3:38 PM, Marc Schuetze <[EMAIL PROTECTED]> wrote:
>>
>> But the current behavior is not doing that. When a field is missing in
>> a request it is not being picked up by the validation routine
>
> Wasn't this question already answered in this thread?  If your
> validation rules require that a certain field be present, then you
> MUST specify that the field is required in your validation rules.
>
>
> var $validate = array(
>   'name' => VALID_NOT_EMPTY,
>   );
>
> is not the same as
>
> var $validate = array(
>   'name' => array('rule' => 'alphaNumeric', 'required' => true,
> 'message' => 'Required')
> );
>
> If I am misunderstanding the issue, please correct me.
>
> --
> Chris Hartjes
> Internet Loudmouth
> Motto for 2008: "Moving from herding elephants to handling snakes..."
> @TheKeyBoard: http://www.littlehart.net/atthekeyboard
>
> >
>

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



Re: possible bug? validation successful even though required fields are not empty

2008-05-14 Thread Chris Hartjes

On Wed, May 14, 2008 at 3:38 PM, Marc Schuetze <[EMAIL PROTECTED]> wrote:
>
> But the current behavior is not doing that. When a field is missing in
> a request it is not being picked up by the validation routine

Wasn't this question already answered in this thread?  If your
validation rules require that a certain field be present, then you
MUST specify that the field is required in your validation rules.


var $validate = array(
   'name' => VALID_NOT_EMPTY,
   );

is not the same as

var $validate = array(
   'name' => array('rule' => 'alphaNumeric', 'required' => true,
'message' => 'Required')
);

If I am misunderstanding the issue, please correct me.

-- 
Chris Hartjes
Internet Loudmouth
Motto for 2008: "Moving from herding elephants to handling snakes..."
@TheKeyBoard: http://www.littlehart.net/atthekeyboard

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



Re: possible bug? validation successful even though required fields are not empty

2008-05-14 Thread Marc Schuetze

> But the current behavior is indeed correct. You simply cannot trust
> that values that should be set in your form will be. If you get a
> request that comes in missing a field, your validation routine needs
> to pick that up. Otherwise, you'd need to do an isset() for each
> required value after validation occurs.
> --~--~-~--~~~---~--~~

But the current behavior is not doing that. When a field is missing in
a request it is not being picked up by the validation routine

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



Re: possible bug? validation successful even though required fields are not empty

2008-05-14 Thread jonknee

> What if there was a case where you didn't want to save all of the
> fields again when you're updating a record?

There are a few ways to go, the easiest probably being
Model::saveField():

$this->User->id = 1
$this->User->saveField('username', 'new_username')

Or use some more complex validation to make use of the 'on' key
(http://book.cakephp.org/view/125/data-validation#on-131).

Or if you need to update a few fields, you could save some queries by
copying the data first, modifying the columns you want to change and
then saving the data.

But the current behavior is indeed correct. You simply cannot trust
that values that should be set in your form will be. If you get a
request that comes in missing a field, your validation routine needs
to pick that up. Otherwise, you'd need to do an isset() for each
required value after validation occurs.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---



Re: possible bug? validation successful even though required fields are not empty

2008-05-14 Thread b logica

My understanding is that the controller should remove the field from
the validation array:

unset($this->ModelName->validate['field_name']);

On Wed, May 14, 2008 at 12:22 PM, [EMAIL PROTECTED]
<[EMAIL PROTECTED]> wrote:
>
> What if there was a case where you didn't want to save all of the
> fields again when you're updating a record?
>
> For instance, if a user is updating his or her User record, and wants
> to edit a username and birthdate, for example.  You probably wouldn't
> have a form field for 'password' in this same place, so that field
> would not be included in your array of data being saved, but even if
> password is required, you wouldn't expect this to throw an error.
>
> I haven't done much w/ 1.2 validation, and I don't really know what
> the difference is between allowEmpty and required, but in 1.1 if a
> field was not present in your array of save data, it was not
> validated.  Perhaps 1.2 solves this all by using required to specify a
> field has to be present in the array, and allowEmpty to say, if the
> field is present, it can't be empty...? I have no idea...
>
> If you wanted to not allow a field to be saved, you can always
> unset(this->data[Model][field]) or I believe there's an
> 'expectedFields' attribute to the save function.
>
> On Apr 29, 2:55 pm, jonknee <[EMAIL PROTECTED]> wrote:
>> > well my thinking is, if you wanted a field validated, you would have a
>> > form field present for it, at which point it would pass this field
>> > along for validation
>>
>> You should never trust your validation to the form values that should
>> be coming in from the user (you should never trust *anything* from the
>> user). The user could easily not pass form fields and could also
>> easily pass values you don't expect.A model with a field marked as
>> required should always be required, no matter the circumstances.
>>
>> Luckily, it appears CakePHP is doing just that. I just tried removing
>> a form field for a model that had a required validation and it
>> wouldn't save. I changed required=True to required=False and it saved
>> just fine.
>>
>> I think the problem MarcS is having is simply a problem in his
>> validation routine. Can you post some code?
> >
>

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



Re: possible bug? validation successful even though required fields are not empty

2008-05-14 Thread [EMAIL PROTECTED]

What if there was a case where you didn't want to save all of the
fields again when you're updating a record?

For instance, if a user is updating his or her User record, and wants
to edit a username and birthdate, for example.  You probably wouldn't
have a form field for 'password' in this same place, so that field
would not be included in your array of data being saved, but even if
password is required, you wouldn't expect this to throw an error.

I haven't done much w/ 1.2 validation, and I don't really know what
the difference is between allowEmpty and required, but in 1.1 if a
field was not present in your array of save data, it was not
validated.  Perhaps 1.2 solves this all by using required to specify a
field has to be present in the array, and allowEmpty to say, if the
field is present, it can't be empty...? I have no idea...

If you wanted to not allow a field to be saved, you can always
unset(this->data[Model][field]) or I believe there's an
'expectedFields' attribute to the save function.

On Apr 29, 2:55 pm, jonknee <[EMAIL PROTECTED]> wrote:
> > well my thinking is, if you wanted a field validated, you would have a
> > form field present for it, at which point it would pass this field
> > along for validation
>
> You should never trust your validation to the form values that should
> be coming in from the user (you should never trust *anything* from the
> user). The user could easily not pass form fields and could also
> easily pass values you don't expect.A model with a field marked as
> required should always be required, no matter the circumstances.
>
> Luckily, it appears CakePHP is doing just that. I just tried removing
> a form field for a model that had a required validation and it
> wouldn't save. I changed required=True to required=False and it saved
> just fine.
>
> I think the problem MarcS is having is simply a problem in his
> validation routine. Can you post some code?
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---



Re: possible bug? validation successful even though required fields are not empty

2008-04-29 Thread b logica

The alphaNumeric rule may not be enough if you want spaces, hyphens,
etc. to be accepted as well. If so, try 'rule' => array('minLength',
1) instead.

On Tue, Apr 29, 2008 at 3:36 PM, Marc Schuetze <[EMAIL PROTECTED]> wrote:
>
>  ok I'll be sure to do that.
>
>  thanks for your help
>
>
>
>  On Tue, Apr 29, 2008 at 8:28 PM, jonknee <[EMAIL PROTECTED]> wrote:
>  >
>  >  On Apr 29, 3:13 pm, MarcS <[EMAIL PROTECTED]> wrote:
>  >  > I don't think there's a bug in it.
>  >  >
>  >  > all I have is this
>  >  >
>  >  > var $validate = array(
>  >  > 'name' => VALID_NOT_EMPTY,
>  >  > 'url' => array('rule' => 'url','message' => 'this field 
> must contain a valid url')
>  >  > );
>  >
>  >  Not a bug per se, just not enough to tell CakePHP that the field is
>  >  required. VALID_NOT_EMPTY is a regex and will only be executed if a
>  >  value is passed. That's somewhat lame, but here's what you do if you
>  >  want it really to be required (just for the name field, you can get
>  >  the idea):
>  >
>  >  var $validate = array(
>  > 'name' => array('rule' => 'alphaNumeric', 'required' => true,
>  >  'message' => 'Required')
>  >  );
>  >
>  >  You have to set required=true.
>  >
>  >
>  > >
>  >
>
>  >
>

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



Re: possible bug? validation successful even though required fields are not empty

2008-04-29 Thread Marc Schuetze

ok I'll be sure to do that.

thanks for your help

On Tue, Apr 29, 2008 at 8:28 PM, jonknee <[EMAIL PROTECTED]> wrote:
>
>  On Apr 29, 3:13 pm, MarcS <[EMAIL PROTECTED]> wrote:
>  > I don't think there's a bug in it.
>  >
>  > all I have is this
>  >
>  > var $validate = array(
>  > 'name' => VALID_NOT_EMPTY,
>  > 'url' => array('rule' => 'url','message' => 'this field 
> must contain a valid url')
>  > );
>
>  Not a bug per se, just not enough to tell CakePHP that the field is
>  required. VALID_NOT_EMPTY is a regex and will only be executed if a
>  value is passed. That's somewhat lame, but here's what you do if you
>  want it really to be required (just for the name field, you can get
>  the idea):
>
>  var $validate = array(
> 'name' => array('rule' => 'alphaNumeric', 'required' => true,
>  'message' => 'Required')
>  );
>
>  You have to set required=true.
>
>
> >
>

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



Re: possible bug? validation successful even though required fields are not empty

2008-04-29 Thread jonknee

On Apr 29, 3:13 pm, MarcS <[EMAIL PROTECTED]> wrote:
> I don't think there's a bug in it.
>
> all I have is this
>
>         var $validate = array(
>                 'name' => VALID_NOT_EMPTY,
>                 'url' => array('rule' => 'url','message' => 'this field must 
> contain a valid url')
>         );

Not a bug per se, just not enough to tell CakePHP that the field is
required. VALID_NOT_EMPTY is a regex and will only be executed if a
value is passed. That's somewhat lame, but here's what you do if you
want it really to be required (just for the name field, you can get
the idea):

var $validate = array(
'name' => array('rule' => 'alphaNumeric', 'required' => true,
'message' => 'Required')
);

You have to set required=true.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---



Re: possible bug? validation successful even though required fields are not empty

2008-04-29 Thread MarcS

I don't think there's a bug in it.

all I have is this

var $validate = array(
'name' => VALID_NOT_EMPTY,
'url' => array('rule' => 'url','message' => 'this field must 
contain
a valid url')
);

I had a bug in my script which caused both name and url to not be
passed and that's how I noticed that it still validates and just
leaves the fields empty.

On Apr 29, 7:55 pm, jonknee <[EMAIL PROTECTED]> wrote:
> > well my thinking is, if you wanted a field validated, you would have a
> > form field present for it, at which point it would pass this field
> > along for validation
>
> You should never trust your validation to the form values that should
> be coming in from the user (you should never trust *anything* from the
> user). The user could easily not pass form fields and could also
> easily pass values you don't expect.A model with a field marked as
> required should always be required, no matter the circumstances.
>
> Luckily, it appears CakePHP is doing just that. I just tried removing
> a form field for a model that had a required validation and it
> wouldn't save. I changed required=True to required=False and it saved
> just fine.
>
> I think the problem MarcS is having is simply a problem in his
> validation routine. Can you post some code?
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---



Re: possible bug? validation successful even though required fields are not empty

2008-04-29 Thread jonknee

> well my thinking is, if you wanted a field validated, you would have a
> form field present for it, at which point it would pass this field
> along for validation

You should never trust your validation to the form values that should
be coming in from the user (you should never trust *anything* from the
user). The user could easily not pass form fields and could also
easily pass values you don't expect.A model with a field marked as
required should always be required, no matter the circumstances.

Luckily, it appears CakePHP is doing just that. I just tried removing
a form field for a model that had a required validation and it
wouldn't save. I changed required=True to required=False and it saved
just fine.

I think the problem MarcS is having is simply a problem in his
validation routine. Can you post some code?


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



Re: possible bug? validation successful even though required fields are not empty

2008-04-29 Thread MarcS

yeah I can see that argument.

thanks for your replies

On Apr 29, 6:59 pm, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]>
wrote:
> well my thinking is, if you wanted a field validated, you would have a
> form field present for it, at which point it would pass this field
> along for validation
>
> On Apr 29, 1:55 pm, MarcS <[EMAIL PROTECTED]> wrote:
>
> > yeah I guess I'll have to do that.
> > But it doesn't make much sense to me that cake will save records even
> > though validation rules say that the field shouldn't be empty.
> > There ought to be an option which would force it to validate all
> > fields, including those that have not been passed.
>
> > On Apr 29, 6:52 pm, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]>
> > wrote:
>
> > > Cake only validates the fields you're passing to it, so since there is
> > > no 'b' in your data save, it's not being validated
>
> > > As far as I know it still works this way in 1.2; but I could be wrong;
> > > try passing array('a'=>'food', 'b'=>'')
>
> > > On Apr 29, 1:50 pm, MarcS <[EMAIL PROTECTED]> wrote:
>
> > > > Hi,
>
> > > > I'm wondering whether the following is desired behaviour or it is a
> > > > bug.
>
> > > > let's say a table has 2 columns a and b. B is required.
> > > > when I do
> > > > $this->Model->save('a' => 'foo');
> > > > the record validates even though a is required. It seems like fields
> > > > that are not included in the data passed to save() are just ignored.
> > > > Is that supposed to be that way? Wouldn't make much sense to me
>
> > > > Marc
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---



Re: possible bug? validation successful even though required fields are not empty

2008-04-29 Thread Sliv

> But it doesn't make much sense to me that cake will save records even
> though validation rules say that the field shouldn't be empty.

Again, you're not saving the invalid data, you're only saving the
valid data.  Validation is about making sure data that's going to be
saved is correct according to your rules.  If you want to check
another field that won't be saved first, then you need to change your
validation rules to take that into account.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---



Re: possible bug? validation successful even though required fields are not empty

2008-04-29 Thread [EMAIL PROTECTED]

well my thinking is, if you wanted a field validated, you would have a
form field present for it, at which point it would pass this field
along for validation

On Apr 29, 1:55 pm, MarcS <[EMAIL PROTECTED]> wrote:
> yeah I guess I'll have to do that.
> But it doesn't make much sense to me that cake will save records even
> though validation rules say that the field shouldn't be empty.
> There ought to be an option which would force it to validate all
> fields, including those that have not been passed.
>
> On Apr 29, 6:52 pm, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]>
> wrote:
>
> > Cake only validates the fields you're passing to it, so since there is
> > no 'b' in your data save, it's not being validated
>
> > As far as I know it still works this way in 1.2; but I could be wrong;
> > try passing array('a'=>'food', 'b'=>'')
>
> > On Apr 29, 1:50 pm, MarcS <[EMAIL PROTECTED]> wrote:
>
> > > Hi,
>
> > > I'm wondering whether the following is desired behaviour or it is a
> > > bug.
>
> > > let's say a table has 2 columns a and b. B is required.
> > > when I do
> > > $this->Model->save('a' => 'foo');
> > > the record validates even though a is required. It seems like fields
> > > that are not included in the data passed to save() are just ignored.
> > > Is that supposed to be that way? Wouldn't make much sense to me
>
> > > Marc
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---



Re: possible bug? validation successful even though required fields are not empty

2008-04-29 Thread Sliv

How does it not make sense to you?  If you are not attempting to save
the data, why do you care if it's valid?  Quite the contrary;
validating data I'm not trying to save wouldn't make much sense.

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



Re: possible bug? validation successful even though required fields are not empty

2008-04-29 Thread MarcS

yeah I guess I'll have to do that.
But it doesn't make much sense to me that cake will save records even
though validation rules say that the field shouldn't be empty.
There ought to be an option which would force it to validate all
fields, including those that have not been passed.

On Apr 29, 6:52 pm, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]>
wrote:
> Cake only validates the fields you're passing to it, so since there is
> no 'b' in your data save, it's not being validated
>
> As far as I know it still works this way in 1.2; but I could be wrong;
> try passing array('a'=>'food', 'b'=>'')
>
> On Apr 29, 1:50 pm, MarcS <[EMAIL PROTECTED]> wrote:
>
> > Hi,
>
> > I'm wondering whether the following is desired behaviour or it is a
> > bug.
>
> > let's say a table has 2 columns a and b. B is required.
> > when I do
> > $this->Model->save('a' => 'foo');
> > the record validates even though a is required. It seems like fields
> > that are not included in the data passed to save() are just ignored.
> > Is that supposed to be that way? Wouldn't make much sense to me
>
> > Marc
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---



Re: possible bug? validation successful even though required fields are not empty

2008-04-29 Thread [EMAIL PROTECTED]

Cake only validates the fields you're passing to it, so since there is
no 'b' in your data save, it's not being validated

As far as I know it still works this way in 1.2; but I could be wrong;
try passing array('a'=>'food', 'b'=>'')

On Apr 29, 1:50 pm, MarcS <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I'm wondering whether the following is desired behaviour or it is a
> bug.
>
> let's say a table has 2 columns a and b. B is required.
> when I do
> $this->Model->save('a' => 'foo');
> the record validates even though a is required. It seems like fields
> that are not included in the data passed to save() are just ignored.
> Is that supposed to be that way? Wouldn't make much sense to me
>
> Marc
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---



possible bug? validation successful even though required fields are not empty

2008-04-29 Thread MarcS

Hi,

I'm wondering whether the following is desired behaviour or it is a
bug.

let's say a table has 2 columns a and b. B is required.
when I do
$this->Model->save('a' => 'foo');
the record validates even though a is required. It seems like fields
that are not included in the data passed to save() are just ignored.
Is that supposed to be that way? Wouldn't make much sense to me

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