[Mojolicious] Get an array from checkboxes

121 views
Skip to first unread message

mab974

unread,
Mar 1, 2020, 3:46:10 PM3/1/20
to mojol...@googlegroups.com
Hi,

How do I get multiple checkbox values as an array?
I always get the value of the last checked checkbox.


my example :
in template

%= check_box 'groupMemberships' => $groupname

or when checked

<input type='checkbox' name='groupMemberships' checked value='<%=
$groupname %>'>

and in controller

my @groups = $c->param('groupMemberships');

Thanks in advance.

Regards,

-*-
mab974<mab...@gmail.com>

Dan Book

unread,
Mar 1, 2020, 3:48:48 PM3/1/20
to mojol...@googlegroups.com
param returns a single value, by design, because this avoids the context sensitivity bug that led to for example  https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-1572. To get multiple values, use every_param, which returns an array reference:

  my $groups = $c->every_param('groupMemberships');

-Dan

--
You received this message because you are subscribed to the Google Groups "Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mojolicious...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/mojolicious/20200302002747.9c63598aae28de1f8a08e4ab%40gmail.com.

mab974

unread,
Mar 2, 2020, 10:38:48 AM3/2/20
to mojol...@googlegroups.com
Thanks Dan !

It seems I get only the NEW checked values not all checked values.
Do I use it the right way ?

my @members = @{$c->every_param('groupMembers')};



Selon Dan Book <gri...@gmail.com> :
> param returns a single value, by design, because this avoids the context
> sensitivity bug that led to for example
> https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-1572. To get
> multiple values, use every_param, which returns an array reference:
>
> my $groups = $c->every_param('groupMemberships');
>
> -Dan
>
> On Sun, Mar 1, 2020 at 3:46 PM mab974 <mab...@gmail.com> wrote:
>
> > Hi,
> >
> > How do I get multiple checkbox values as an array?
> > I always get the value of the last checked checkbox.
> >
> >
> > my example :
> > in template
> >
> > %= check_box 'groupMemberships' => $groupname
> >
> > or when checked
> >
> > <input type='checkbox' name='groupMemberships' checked value='<%=
> > $groupname %>'>
> >
> > and in controller
> >
> > my @groups = $c->param('groupMemberships');
> >
> > Thanks in advance.
> >
> > Regards,
> >
> > -*-
> > mab974<mab...@gmail.com>
> >
> > --

-*-
mab974<mab...@gmail.com>

Dan Book

unread,
Mar 2, 2020, 10:51:42 AM3/2/20
to mojol...@googlegroups.com
That is correct, it should return all "values" of checked items with that "name". I don't know what the distinction of "new checked values" is that you mention. Make sure the checkboxes are all within the same form tag.

-Dan

--
You received this message because you are subscribed to the Google Groups "Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mojolicious...@googlegroups.com.

Felipe Gasper

unread,
Mar 2, 2020, 10:54:40 AM3/2/20
to mojol...@googlegroups.com
https://developer.mozilla.org/en-US/docs/Web/API/FormData

^^ Also, if you’re not sure whether the problem is in Perl or in the browser, you can use this to see what data the browser intends to send prior to sending.

-FG
> To view this discussion on the web visit https://groups.google.com/d/msgid/mojolicious/CABMkAVWFJ1PAZ%3D7CY9J9MktTB-rNCo8A36p3K2uGppPhHTF7-w%40mail.gmail.com.

mab974

unread,
Mar 2, 2020, 11:13:58 AM3/2/20
to mojol...@googlegroups.com
thanks a lot ! It was a problem with some checkboxes.
All is ok !


Selon Felipe Gasper <fel...@felipegasper.com> :
Reply all
Reply to author
Forward
0 new messages