I am attempting to put together a form that handles an intersection between 2 different database objects.
I'll attempt to explain this in words - hopefully its clear. If not I can get out the object definitions, but they have additional clutter around which may make things muddier :-) This is for a theatre backstage management system. I'm using [] to show row objects in the description below - so [event] is the row class/object for an event. We have an [event] (ie a show in the theatre). An [event] has many [booking]s (ie a hire session) We also have a number of [staff] I want a form to allow a particular [staff] member to volunteer for [bookings] within a specified [event] There is a linking table for this - [crew_volunteer] - which has a belongs to relation to [booking] and [staff], ([staff] has many [crew_volunteer] and many-to-many [booking] - and the same in reverse - ie a typical linking table). So at the point where I am generating the form I have 2 objects - [event] and [staff] Now if I have a YAML form config like this... elements: - type: Checkboxgroup name: bookings model_config: label_column: text_info resultset: Booking attributes: order_by: start prefetch: booking_type condition: event: 382 and use a typical Catalyst::Controller::HTML::FormFu like this:- # check and process form if ( $form->submitted_and_valid && ( lc( $form->method ) eq 'post' ) ) { $c->log->debug('Dealing with form to update user'); $form->model->update($staff); } elsif ( $form->has_errors ) { $c->log->debug( 'Errors in form: ' . Dumper( $form->get_errors ) ); } elsif ( !$form->submitted ) { $c->log->debug('Setting form default values'); $form->model->default_values($staff); } That works fine, except I have hard coded the [event] I am working with (the condition section within the model_config) - I want it to work with the [event] that is passed to the controller. So I tried finagling that within the first part of the code within the controller:- # splice event info into the form as a restriction my $element = $form->get_element( { name => 'bookings' } ); my $modelcf = $element->model_config(); $modelcf->{condition} = { event => $event->id }; $element->model_config($modelcf); $form->process; # need to redo this explicitly due to change above However the FormFu Model code is not picking up the changed condition (including if I delete the YAML condition config entirely). Now I could entirely build the element within the perl controller code - I have used that elsewhere for where its a non-database type form - but I'm starting to embed presentation and config into the controller. So how can I add a dynamic restriction to a database many-to-many select form? Is there a much cleaner mechanism I should be using? Can I just override the caching that appears be taking part within this element? Nigel. -- [ Nigel Metheringham nigel.methering...@intechnology.com ] [ - Comments in this message are my own and not ITO opinion/policy - ] _______________________________________________ HTML-FormFu mailing list HTML-FormFu@lists.scsys.co.uk http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu