I'll give it a shot. Thanks.
On Feb 18, 4:49 pm, Martino Piccinato <m...@yoolab.com> wrote:
> I think the easisiest way would be making
> yourhttp://www.symfony-project.org/api/1_2/sfValidatorSchema
> accepting as a first argument the array of the checkbox fields names
> and, in "doClean" method validating that at least one is checked (and
> use this as a post validator). I've never implemented something
> similar so take my words just as "this is the way I'd go" and not as
> "I'm sure this is the best way" :-)
>
> On Wed, Feb 18, 2009 at 2:49 PM, Mark Smith
>
> <marksmith5...@jungle-monkey.com> wrote:
>
> > That is what I tried first, but because my array of checkboxes is
> > dynamic construction of the global validator is quite complicated.
>
> > I'm not even sure if it's possible, the code below was my first
> > attempt, but it doesn't work as I expected.
>
> > Can you let me know if I am on the right path?
>
> > Thanks
>
> > $validationArray=array();
> > foreach($this->services as $serviceId => $serviceName)
> > {
> > $this->widgetSchema['requiredServices'][$serviceName] =
> > new sfWidgetFormSchema();
> > $this->validatorSchema['requiredServices'][$serviceName] =
> > new sfValidatorSchema();
>
> > foreach($this->regions as $regionCode => $regionName)
> > {
> > $this->widgetSchema['requiredServices'][$serviceName]
> > [$regionCode] = new sfWidgetFormInputCheckbox(array(),array
> > ('value'=>'true','class'=>'styled'));
> > $this->validatorSchema['requiredServices']
> > [$serviceName][$regionCode] = new sfValidatorPass();
> > array_push($validationArray,$this->validatorSchema
> > ['requiredServices'][$serviceName][$regionCode]);
> > }
> > }
>
> > $this->validatorSchema->setPostValidator(new sfValidatorOr
> > ($validationArray),array('required' => true));
>
> > On Feb 18, 12:52 pm, Martino Piccinato <m...@yoolab.com> wrote:
> >> See the paragraph "Global validators"
> >> inhttp://www.symfony-project.org/book/forms/1_2/en/02-Form-Validation.
>
> >> I think your problem will be better handled by a global validator as
> >> it regards more than one input field.
>
> >> Martino
>
> >> On Wed, Feb 18, 2009 at 1:16 PM, Mark Smith
>
> >> <marksmith5...@jungle-monkey.com> wrote:
>
> >> > I have a dynamic 2d array of checkboxes, and I want to require that at
> >> > least one is selected. Trying to write validation rules for this is
> >> > proving to be excruciatingly difficult.
>
> >> > The only way I could accomplish this is to override the isValid
> >> > function and put in some logic to manually check each box.
>
> >> > It causes the form not to validate, but obviously does nothing to the
> >> > error schema:
>
> >> > public function isValid()
> >> > {
> >> > $result=false;
>
> >> > foreach($this['requiredServices'] as $service)
> >> > {
> >> > foreach($service as $region)
> >> > {
> >> > if($region->getValue())
> >> > {
> >> > $result=true;
> >> > break;
> >> > }
> >> > }
> >> > }
>
> >> > return $result && parent::isValid();
> >> > }
>
> >> > Is there a better way than this?
>
> >> > Thanks
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"symfony users" group.
To post to this group, send email to symfony-users@googlegroups.com
To unsubscribe from this group, send email to
symfony-users+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/symfony-users?hl=en
-~----------~----~----~----~------~----~------~--~---