On 6 December 2010 10:58, Carl Franks <fireart...@gmail.com> wrote: > On 6 December 2010 10:47, Erez Schatz <moonb...@gmail.com> wrote: >> On 12/03/2010 01:35 PM, Carl Franks wrote: >> >>> There's also a HTML::FormFu::Constraint::DBIC::Unique >> >> Thanks, its a good solution, however... >> >>> I'm not sure what you mean by "this doesn't work if the user enters >>> his own information", can you give an example? >> >> When a user profile page loads, it is populated with current >> information. If a user clicks on "submit" it then submit all information >> that is in the form. Any "Unique" test will fail, seeing as the >> information is already in the DB - under the user's name! >> >> Is there a way to tell HTML::FF "validate only values that have been >> changed"? > > Ah, I getcha. > I think the solution here would be to use different forms for the "add > profile" and the "edit profile" functions. > The first has the Unique constraint, the second doesn't. > > An easy way to reuse the same basic form, if the only difference is > the constraint, would be something like this: > > edit.yml > === > elements: > - name: username > > > add.yml > === > load_config_file: 'edit.yml' > constraints: > - type: 'DBIC::Unique' > name: username > > Will this work for you? > Carl
Hi, I've been using just a single form for both add and edit, using the self_stash_key option from H::F::C::DBIC::Unique. The idea is that you put the DBIC row object being edited onto the Catalyst stash and then name that stash key in the form config. The uniqueness constraint will ignore this one object if it's on the stash. A simplified (but working) example from our project: - type: Text name: date label: Visit Date constraints: - Required - type: DBIC::Unique resultset: Visit self_stash_key: object message: This visit already exists others: patient_id In this case the 'visit' object being edited is put on the stash under the 'object' key (this example also illustrates including 'patient_id' as a unique constraint, alongside 'date'; i.e. only one visit per patient per date). There are formatting constraints I've omitted here for the sake of clarity. Cheers, Tim _______________________________________________ HTML-FormFu mailing list HTML-FormFu@lists.scsys.co.uk http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu