[html-formfu] Confusion with options_from_model and many_to_many
Leanan Sidhe
the.leanan.sidhe at gmail.com
Tue Mar 10 16:28:25 GMT 2009
What I want to do:
I have a users, user_roles and roles table. I want to have a set of select
boxes for a user for each possible role, and then update the user_roles
table to say, for example, that user 1 has roles 1,2,3 if roles 1,2, and 3
were selected on the form. I can get the page to list off the roles, but
nothing gets saved to the database upon a submit. I've tried looking at the
tests, but I can't quite figure out which one would be applicable.
Here goes:
Schema:
MyApp::Schema::DB::Result::Users:
__PACKAGE__->might_have(
'user_contact_info' =3D> 'MyApp::Schema::DB::Result::Address',
'user_id'
);
__PACKAGE__->has_many(
'user_roles' =3D> 'MyApp::Schema::DB::Result::UserRoles',
'user_id'
);
__PACKGE__->many_to_many(
'roles' =3D> 'user_roles',
'role_id'
);
MyApp::Schema::DB::Result::Roles:
__PACKAGE__->has_many(
'user_roles' =3D> 'MyApp::Schema::DB::Result::UserRoles',
'role_id'
);
__PACKGE__->many_to_many(
'users' =3D> 'user_roles',
'user_id'
);
MyApp::Schema::DB::Result::UserRoles:
__PACKAGE__->belongs_to(
'user' =3D> 'MyApp::Schema::DB::Result::Users',
'user_id'
);
__PACKAGE__->belongs_to(
'role' =3D> 'MyApp::Schema::DB::Result::Roles',
'role_id'
);
Short description:
I have a portion of a form that deals with users. They have contact
information (let's say just an address for now) and then I want a list of
all possible roles they could hold, with a checkbox for each to
grant/de-grant that role to that particular user. My formconfig looks like
the following:
---
elements:
- type: Block
nested_name: user_contact_info
elements:
- type: Text
label: Street
name: street
[... etc etc for address stuff ...]
- type: Checkboxgroup
name: users
model_conifg:
resultset: Roles
If I try to pull the -type: Checkboxgroup out of the nested portion, I get a
completely different error, about how UserRoles doesn't have relationship
role_id (which really really confuses me, because none of my relationships
are named role_id)
Here is my problem: If I set resultset: Roles in the config, I get the
following error:
Caught exception in MyApp::Controller::User->user_edit "need a schema
or context at C:/Perl/site/lib/HTML/FormFu/Element/_Group.pm line 74"
If, however, I change that to model: Roles, then I get a nice list of
all the roles with a checkbox. But then the data doesn't get saved to
the database. I want all the checked roles to get put into the
UserRoles table so that, for example if user 1 has roles 1,2,3, then
UserRoles will have rows [1,1],[1,2],[1,3] (user_id,role_id).
I do see that when I submit the form (using the model: Roles, since
using resultset: Roles keeps erroring out), I'm getting something like
this upon submit in the body: user_contact_info.users: 1,2,3 But,
as I've mentioned, no saves.
As near as I can tell, these are the relevant parts of the doc, but
it's not working when I try either:
http://search.cpan.org/~cfranks/HTML-FormFu-Model-DBIC-0.03007/lib/HTML/For=
mFu/Model/DBIC.pm#many_to_many_selection
http://search.cpan.org/~cfranks/HTML-FormFu-Model-DBIC-0.03007/lib/HTML/For=
mFu/Model/DBIC.pm#options_from_model
Do I need to set both model: and resultset? I've set my schema in the
config. Here it is:
<Controller::HTML::FormFu>
<model_stash>
schema DB
</model_stash>
</Controller::HTML::FormFu>
I'm also still confused as to wether it should be schema: DB or schema
DB. Neither one seems to make much of a difference either way.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/html-formfu/attachments/20090310/5c=
3fe327/attachment.htm
More information about the HTML-FormFu
mailing list