[Catalyst] HTML::FormHandler help!

Sungsam Gong gong.sungsam at gmail.com
Tue Mar 6 17:13:06 GMT 2012


Dear Gerda,

Thanks for making HTML::FormHandler, which I found very useful.

I was trying to make a simple registration page using
HTML::FormHandler, but couldn't make it through.
The form itself looks OK, but after clicking the submit button, I got
an error message which I dumped below:

Can't call method "insert" on an undefined value at
/home/sung/perl5/lib/perl5/DBIx/Class/Row.pm line 350. at
/home/sung/perl5/lib/perl5/DBIx/Class/Schema.pm line 1088
	DBIx::Class::Schema::throw_exception('Nectar::Schema::NECTAR=HASH(0x7e90250)',
'Can\'t call method "insert" on an undefined value at /home/su...')
called at /home/sung/perl5/lib/perl5/DBIx/Class/Storage.pm line 111
	DBIx::Class::Storage::throw_exception('DBIx::Class::Storage::DBI::mysql=HASH(0x7e43400)',
'Can\'t call method "insert" on an undefined value at /home/su...')
called at /home/sung/perl5/lib/perl5/DBIx/Class/Storage.pm line 197
	DBIx::Class::Storage::__ANON__('DBIx::Class::Storage::DBI::mysql=HASH(0x7e43400)',
'Can\'t call method "insert" on an undefined value at /home/su...')
called at /home/sung/perl5/lib/perl5/DBIx/Class/Storage.pm line 218
	DBIx::Class::Storage::__ANON__('Can\'t call method "insert" on an
undefined value at /home/su...') called at
/home/sung/perl5/lib/perl5/Try/Tiny.pm line 100
	Try::Tiny::try('CODE(0xa780550)', 'Try::Tiny::Catch=REF(0xa847900)',
'Try::Tiny::Finally=REF(0xa6298f0)') called at
/home/sung/perl5/lib/perl5/DBIx/Class/Storage.pm line 258
	DBIx::Class::Storage::txn_do('undef', 'undef') called at
/home/sung/perl5/lib/perl5/DBIx/Class/Storage/DBI.pm line 807
	DBIx::Class::Storage::DBI::txn_do('DBIx::Class::Storage::DBI::mysql=HASH(0x7e43400)',
'CODE(0xa7f98b0)') called at
/home/sung/perl5/lib/perl5/DBIx/Class/Schema.pm line 660
	DBIx::Class::Schema::txn_do('Nectar::Schema::NECTAR=HASH(0x7e90250)',
'CODE(0xa7f98b0)') called at
/home/sung/perl5/lib/perl5/HTML/FormHandler/TraitFor/Model/DBIC.pm
line 87
	HTML::FormHandler::TraitFor::Model::DBIC::update_model('Nectar::Form::Register=HASH(0xa0c39c0)')
called at /home/sung/perl5/lib/perl5/HTML/FormHandler.pm line 296
	HTML::FormHandler::run('Nectar::Form::Register=HASH(0xa0c39c0)',
'item', 'Nectar::WebV2::Model::NECTAR::User=HASH(0xa18ed70)',
'params', 'HASH(0xa19f2e0)', 'schema',
'Nectar::Schema::NECTAR=HASH(0x7e90250)') called at
/data/Serve/Web/Cardiacdb.org/Nectar-WebDev/script/../lib/Nectar/WebV2/Controller/Auth.pm
line 83
	Nectar::WebV2::Controller::Auth::register('Nectar::WebV2::Controller::Auth=HASH(0x80c77e0)',
'Nectar::WebV2=HASH(0xa0e9840)') called at
/home/sung/perl5/lib/perl5/Catalyst/Action.pm line 65
	Catalyst::Action::execute('Catalyst::Action=HASH(0x94c9740)',
'Nectar::WebV2::Controller::Auth=HASH(0x80c77e0)',
'Nectar::WebV2=HASH(0xa0e9840)') called at
/home/sung/perl5/lib/perl5/Catalyst.pm line 1667
	eval {...} called at /home/sung/perl5/lib/perl5/Catalyst.pm line 1667


The Controller::Auth::register looks like:

    use Nectar::Form::Register;
    my $form = Nectar::Form::Register->new;

    # Stash the form and the template to render it
    $c->stash(template => 'Form/register.tt2', form=> $form);

    # Create an empty row object for the desired table
    my $new_user= $c->model("NECTAR::User")->new_result( {} );

    # Process the form with the parameters, a schema and a row object
    $form->process(
        item   => $new_user,
        params => $c->request->parameters,
        schema => $c->model("NECTAR")->schema,
    );

You may find that there's 'schema' attribute within the process, which
you might think it's irrelevant here.
However if I delete it (e.g. only 'item' and 'params' as per manual),
I got an error shown below:

Caught exception in Nectar::WebV2::Controller::Auth->register "Can't
call method "_count_select" on an undefined value at
/home/sung/perl5/lib/perl5/DBIx/Class/ResultSet.pm line 1494."

My app is based on:
Catalyst 5.90007
DBIx::Class 0.08196
HTML::FormHandler 0.36003
Perl v5.8.8
Linux version 2.6.18-274.17.1.el5.centos.plus
(mockbuild at builder10.centos.org) (gcc version 4.1.2 20080704 (Red Hat
4.1.2-51))

Just to add up, installation of HTML::FormHandler failed via cpanm:

Perl v5.10.0 required--this is only v5.8.8, stopped at
/home/sung/.cpanm/work/1330962009.9533/HTML-FormHandler-0.36003/blib/lib/HTML/FormHandler/Foo.pm
line 9.
BEGIN failed--compilation aborted at
/home/sung/.cpanm/work/1330962009.9533/HTML-FormHandler-0.36003/blib/lib/HTML/FormHandler/Foo.pm
line 9.
Compilation failed in require at t/config.t line 13.
BEGIN failed--compilation aborted at t/config.t line 13.
...
Test Summary Report
-------------------
t/config.t                 (Wstat: 2304 Tests: 0 Failed: 0)
  Non-zero exit status: 9
  Parse errors: No plan found in TAP output
Files=59, Tests=1145, 96 wallclock secs ( 0.27 usr  0.09 sys + 88.52
cusr  3.05 csys = 91.93 CPU)
Result: FAIL
Failed 1/59 test programs. 0/1145 subtests failed.
make: *** [test_dynamic] Error 255
-> FAIL Installing HTML::FormHandler failed. See
/home/sung/.cpanm/build.log for details.

Any thoughts?

Regards,
Sung



More information about the Catalyst mailing list