Re: [Catalyst] subclassing Catalyst::Controller::HTML::FormFu

2009-01-18 Thread Carl Franks
2009/1/17 Markus Holzer markus.hol...@dmk-internet.com:
 Am Samstag, 17. Januar 2009 12:06:33 schrieb Carl Franks:
 2009/1/16 Markus Holzer markus.hol...@dmk-internet.com:
  Hi.
 
  I have created a subclass Catalyst::Controller::HTML::FormFu because I
  want to override the load_form() method. I *think* I have done it right,
  but it doesn't work. The load_form method is never called, but FormFu
  still works.
 
  What am I doing wrong?

 Hi Markus,

 I think you've been confused by the documentation which gives an
 example of FormMethod('load_form') as a way to call a method in your
 own controller, to return a form.
 If that's all you want to do, you don't need to sub class, just make
 sure that you use FormMethod() instead of FormConfig(), and that the
 load_form() method is in your controller class.
 The reason it's not currently working, is there's no load_form()
 method anywhere in the FormFu controller code, so nothing's calling
 it.

 An example of what I think you should be doing:

 package Superclix::Controller::Partnerprogramm;
 use strict;
 use warnings;
 use parent 'Catalyst::Controller';

 sub load_form {
 my ($self, $c) = @_;
 # returns a HTML::FormFu object
 # can get an empty form to start with using $c-form;
 }

 sub neu : Local : FormMethod('load_form') {
 my ($self, $c) = @_;

 my $form = $c-stash-{form};
 }

 Cheers,
 Carl

 ___
 List: Catalyst@lists.scsys.co.uk
 Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
 Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
 Dev site: http://dev.catalyst.perl.org/

 I don't want to work with an empty form. I want to get the form as created by
 formconfig and add some things to it. That's why I think subclassing is the
 way to go.

BTW, I'd be interested to know what you're trying to achieve.
Sub-classing Catalyst::Controller::HTML::FormFu::Action::FormConfig
won't allow you to intercept the form between it being populated with
the config-file, and $form-process() being called.
Although this often isn't an issue, you particularly don't want to
have to call process() twice if it's doing anything heavy-weight such
as calling DBIC or dealing with file uploads.

What I normally do is create a custom HTML::FormFu::Plugin::* class
with a process sub that does the necessary work.
It'll be called automatically during $form-process() before all the
input processing is done.

I've never yet considered having to sub-class C::C::HTML::FormFu or
any of its action classes.

Carl

___
List: Catalyst@lists.scsys.co.uk
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
Dev site: http://dev.catalyst.perl.org/


Re: [Catalyst] subclassing Catalyst::Controller::HTML::FormFu

2009-01-17 Thread Carl Franks
2009/1/16 Markus Holzer markus.hol...@dmk-internet.com:
 Hi.

 I have created a subclass Catalyst::Controller::HTML::FormFu because I want to
 override the load_form() method. I *think* I have done it right, but it
 doesn't work. The load_form method is never called, but FormFu still works.

 What am I doing wrong?

Hi Markus,

I think you've been confused by the documentation which gives an
example of FormMethod('load_form') as a way to call a method in your
own controller, to return a form.
If that's all you want to do, you don't need to sub class, just make
sure that you use FormMethod() instead of FormConfig(), and that the
load_form() method is in your controller class.
The reason it's not currently working, is there's no load_form()
method anywhere in the FormFu controller code, so nothing's calling
it.

An example of what I think you should be doing:

package Superclix::Controller::Partnerprogramm;
use strict;
use warnings;
use parent 'Catalyst::Controller';

sub load_form {
my ($self, $c) = @_;
# returns a HTML::FormFu object
# can get an empty form to start with using $c-form;
}

sub neu : Local : FormMethod('load_form') {
my ($self, $c) = @_;

my $form = $c-stash-{form};
}

Cheers,
Carl

___
List: Catalyst@lists.scsys.co.uk
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
Dev site: http://dev.catalyst.perl.org/


Re: [Catalyst] subclassing Catalyst::Controller::HTML::FormFu

2009-01-17 Thread Markus Holzer
Am Samstag, 17. Januar 2009 12:06:33 schrieb Carl Franks:
 2009/1/16 Markus Holzer markus.hol...@dmk-internet.com:
  Hi.
 
  I have created a subclass Catalyst::Controller::HTML::FormFu because I
  want to override the load_form() method. I *think* I have done it right,
  but it doesn't work. The load_form method is never called, but FormFu
  still works.
 
  What am I doing wrong?

 Hi Markus,

 I think you've been confused by the documentation which gives an
 example of FormMethod('load_form') as a way to call a method in your
 own controller, to return a form.
 If that's all you want to do, you don't need to sub class, just make
 sure that you use FormMethod() instead of FormConfig(), and that the
 load_form() method is in your controller class.
 The reason it's not currently working, is there's no load_form()
 method anywhere in the FormFu controller code, so nothing's calling
 it.

 An example of what I think you should be doing:

 package Superclix::Controller::Partnerprogramm;
 use strict;
 use warnings;
 use parent 'Catalyst::Controller';

 sub load_form {
 my ($self, $c) = @_;
 # returns a HTML::FormFu object
 # can get an empty form to start with using $c-form;
 }

 sub neu : Local : FormMethod('load_form') {
 my ($self, $c) = @_;

 my $form = $c-stash-{form};
 }

 Cheers,
 Carl

 ___
 List: Catalyst@lists.scsys.co.uk
 Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
 Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
 Dev site: http://dev.catalyst.perl.org/

I don't want to work with an empty form. I want to get the form as created by 
formconfig and add some things to it. That's why I think subclassing is the 
way to go.

___
List: Catalyst@lists.scsys.co.uk
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
Dev site: http://dev.catalyst.perl.org/


Re: [Catalyst] subclassing Catalyst::Controller::HTML::FormFu

2009-01-17 Thread Carl Franks
2009/1/17 Markus Holzer markus.hol...@dmk-internet.com:
 Am Samstag, 17. Januar 2009 12:06:33 schrieb Carl Franks:
 2009/1/16 Markus Holzer markus.hol...@dmk-internet.com:
  Hi.
 
  I have created a subclass Catalyst::Controller::HTML::FormFu because I
  want to override the load_form() method. I *think* I have done it right,
  but it doesn't work. The load_form method is never called, but FormFu
  still works.
 
  What am I doing wrong?

 Hi Markus,

 I think you've been confused by the documentation which gives an
 example of FormMethod('load_form') as a way to call a method in your
 own controller, to return a form.
 If that's all you want to do, you don't need to sub class, just make
 sure that you use FormMethod() instead of FormConfig(), and that the
 load_form() method is in your controller class.
 The reason it's not currently working, is there's no load_form()
 method anywhere in the FormFu controller code, so nothing's calling
 it.

 An example of what I think you should be doing:

 package Superclix::Controller::Partnerprogramm;
 use strict;
 use warnings;
 use parent 'Catalyst::Controller';

 sub load_form {
 my ($self, $c) = @_;
 # returns a HTML::FormFu object
 # can get an empty form to start with using $c-form;
 }

 sub neu : Local : FormMethod('load_form') {
 my ($self, $c) = @_;

 my $form = $c-stash-{form};
 }

 Cheers,
 Carl

 ___
 List: Catalyst@lists.scsys.co.uk
 Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
 Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
 Dev site: http://dev.catalyst.perl.org/

 I don't want to work with an empty form. I want to get the form as created by
 formconfig and add some things to it. That's why I think subclassing is the
 way to go.

In that case, sub-classing Catalyst::Controller::HTML::FormFu won't help.
You need to create a sub-class of
Catalyst::Controller::HTML::FormFu::Action::FormConfig
and then set your app's config to use your class to handle FormConfig()

myapp.yml
-

'Controller::HTML::FormFu':
  config_action: 'Classname::Of::Your::Custom::SubClass'

___
List: Catalyst@lists.scsys.co.uk
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
Dev site: http://dev.catalyst.perl.org/