Hi Ian,
Did you ever get anywhere on this? I'm trying to create a checkbox
list like this...
<ul>
<li><input type="checkbox" name="category[]" value="1"
id="category_1" /> <label for="category_1">My category 1</label></li>
<li><input type="checkbox" name="category[]" value="2"
id="category_2" /> <label for="category_2">My category 2</label></li>
</ul>
Like you, I can't figure out how to implement this with the core
widgets...
Kris
On Jun 3, 9:58 am, "Slick Rick" <[EMAIL PROTECTED]> wrote:
> Fabien,
>
> Thanks. I was able to figure this out by creating a new sfWidgetFormSchema
> inside the form. One more question. Why can I not set the "value" of
> acheckbox? This seemed to be the best option, but still didn't work:
>
> new sfWidgetFormInputCheckbox(array(), array('value' => $value));
>
> Any reason why I can't set the value?
>
> Thanks,
>
> -- Ian
>
> ----- Original Message -----
> From: "Fabien Potencier" <[EMAIL PROTECTED]>
> To: <[email protected]>
> Sent: Tuesday, June 03, 2008 2:31 AM
> Subject: [symfony-devs] Re:Dynamiccheckboxarrays for sfForms in 1.1
>
> You can manipulate the widget and validator schemas as if they were
> arrays... except they are not. Instead of creating an array, you need to
> create a sfWidgetSchema, which behaves like an array.
>
> So, in your case, you have 2 options:
>
> * Create a form for your collection of widgets and embed it: symfony
> will do the ground work for you
> * Do everything by hand
>
> Here is an example for the first option:
>
> <?php
>
> class ThingForm extends sfForm
> {
> public function configure()
> {
> // ...
>
> $this->embedForm('group', new checkboxesCollectionForm());
> }
> }
>
> class checkboxesCollectionForm extends sfForm
> {
> public function configure()
> {
> foreach (array('foo', 'bar') as $value)
> {
> $this->widgetSchema[$value] = new sfWidgetFormInputCheckbox();
> $this->validatorSchema[$value] = new sfValidatorPass();
> }
> }
> }
>
> I've attached a screenshot for this example.
>
> And here is the exact same example but you do everything by yourself:
>
> <?php
>
> class ThingForm extends sfForm
> {
> public function configure()
> {
> // ...
>
> $this->widgetSchema['group'] = new sfWidgetFormSchema();
> $this->validatorSchema['group'] = new sfValidatorSchema();
> foreach (array('foo', 'bar') as $value)
> {
> $this->widgetSchema['group'][$value] = new
> sfWidgetFormInputCheckbox();
> $this->validatorSchema['group'][$value] = new sfValidatorPass();
> }
> }
> }
>
> If you want to use the <?php echo $form ?> statement, you will have to
> decorate the collection like this:
>
> $this->widgetSchema['group'] = new
> sfWidgetFormSchemaDecorator($this->widgetSchema['group'],
> $this->widgetSchema['group']->getFormFormatter()->getDecoratorFormat());
>
> Fabien
>
> Ian wrote:
> > One additional note. It's often common to have one "label" for the
> > entire collection of checkboxes. So i'd like to be able to do this as
> > well.
>
> > On Jun 2, 5:16 pm, "Slick Rick" <[EMAIL PROTECTED]> wrote:
> >> I'm trying to create adynamiclist of "groups", that can be selected via
> >> checkboxes. What is the best way to create this "collection" ofcheckbox
> >> widgets in my form class so it is handled by the rendering engine as well
> >> as validation and error handling?
>
> >> I tried to do this:
>
> >> foreach ($groups as $group)
> >> {
> >> $schema['group'][] = new sfWidgetFormInputCheckbox(array(),
> >> array('value' => $group['id']));
>
> >> }
>
> >> ... but when I try to render it, it tells me Widget "group" does not
> >> exist. Even if try to echo $form['group'][0]->render(). Same error.
>
> >> Is there some internal mechanism that can handle groups of form elements
> >> properly?
>
> >> Thanks for any help...
>
> >> -- Ian
>
> --
> Fabien Potencier
> Sensio CEO - symfony lead developer
> sensiolabs.com | symfony-project.com | aide-de-camp.org
> Tél: +33 1 40 99 80 80
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"symfony developers" 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/symfony-devs?hl=en
-~----------~----~----~----~------~----~------~--~---