On 4/11/2012 7:29 PM, Robyn Jonahs wrote:

|
What if I don't want the authors in a select field but a text field? Can
I do that?


I have been trying to use something like in
http://search.cpan.org/~pshangov/HTML-FormFu-Model-DBIC-0.09002/lib/HTML/FormFu/Model/DBIC.pm#has_many_and_many_to_many_relationships
<http://search.cpan.org/%7Epshangov/HTML-FormFu-Model-DBIC-0.09002/lib/HTML/FormFu/Model/DBIC.pm#has_many_and_many_to_many_relationships>
|
|
but that example schema set does not have the "|many-to-many ||join|
|table between books & authors"| as in the tutorial.
https://metacpan.org/module/Catalyst::Manual::Tutorial::03_MoreCatalystBasics#CREATE-A-SQLITE-DATABASE

I can't figure out how to write the YAML to get FormFu to put the data
into my edit form while using the many to many join table. Can anyone
help out?


Hi!

I think, this isn't possible via model::dbic.
'To select / deselect rows from a many_to_many relationship, you must use a multi-valued element, such as a Checkboxgroup or a Select with multiple set.' - http://search.cpan.org/~pshangov/HTML-FormFu-Model-DBIC-0.09002/lib/HTML/FormFu/Model/DBIC.pm#many_to_many_selection. If you need a complex dbic operation, try to manipulate the form configuration via Catalyst controller. Here is an example (sorry, I copied form my app, not a general example, don't care about my variables and object)

In the controller:

sub modify : Chained( 'base' ) : PathPart( 'modify' ) : Args( 0 ) : Form {
    my ( $self, $c ) = @_;
...

        $c->stash->{form}->load_config_file('picture/modify.conf');
$position = $c->stash->{form}->get_all_element( { type => 'File', id => 'add' } );

        @pictures = $c->model('SqlFS')->list_images( {
                container => $c->session->{container},
                id        => $c->session->{itemId} } );

        foreach my $current (@pictures) {
$src = $c->uri_for( '/api/html/geticon/' . $c->session->{container} . '/' . $c->session->{itemId} . '/' . $current->name );
            $position->parent->insert_before(
                $position->parent->element( {
                        name           => $current->name,
                        type           => 'Image',
                        src            => $src,
                        value          => $current->name,
                        retain_default => 1,
                        force_default  => 0,
                    }
                ),
                $position
            );
        }
        $c->stash->{form}->process;
...


And the config:

<elements>
    type                        Block
    <attributes>
        id                      fieldbox
        class                   fifty
    </attributes>
    <elements>
        type                    Block
        tag                     label
        content_loc             form.config.label.picture.modify.fieldset
    </elements>
    <elements>
        type                    Fieldset
        id                      placeholder
        <attributes>
            class               placeholder
        </attributes>
        <elements>
            <<include           ../common/element/file.picture.conf>>
            id                  add
        </elements>
    </elements>
    <elements>
        type                    Fieldset
        id                      buttonholder
        <attributes>
            class               buttonholder
        </attributes>
        <elements>
            <<include           ../common/element/submit.back.conf>>
            value_loc           form.config.value.picture.modify.back
        </elements>
        <elements>
            <<include           ../common/element/submit.add.conf>>
            value_loc           form.config.value.picture.modify.add
        </elements>
    </elements>
</elements>

_______________________________________________
HTML-FormFu mailing list
HTML-FormFu@lists.scsys.co.uk
http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu

Reply via email to