FAQ
Hello,

In my catalyst app I have a method that is used for a Callback constraint.
In my Root.pm controller use a session and log in a user the usual way.


package MyApp::Controller::ControllerA;
...
sub formfu_callback_checka
{
# need to validate using something in session?..
}


My question is, what is the best way to get hold of the session/user
data from within my callback method?

thanks for any help, apologizes if this gets asked all the time,
-Ben

Search Discussions

  • Carl Franks at Jul 5, 2010 at 12:55 pm
    Hi,

    I'd recommend writing a custom constraint class, rather than using Callback.
    It just needs to inherit from HTML::FormFu::Constraint and have a sub
    named 'constrain_value' which will receive the parameters ( $self,
    $value, $params).
    You can then access the Catalyst context via $self->form->stash->{context}

    It can also define a 'constrain_values' sub to override how multiple
    values are handled, or override 'process' to take complete control -
    see the source of HTML::FormFu::Constraint for details.

    Carl

    On 2 July 2010 09:27, Benjamin Martin wrote:
    Hello,

    In my catalyst app I have a method that is used for a Callback constraint.
    In my Root.pm controller use a session and log in a user the usual way.


    ? ? ? ?package MyApp::Controller::ControllerA;
    ? ? ? ?...
    ? ? ? ?sub formfu_callback_checka
    ? ? ? ?{
    ? ? ? ? ? ? ? ?# need to validate using something in session?..
    ? ? ? ?}


    My question is, what is the best way to get hold of the session/user data
    from within my callback method?

    thanks for any help, apologizes if this gets asked all the time,
    -Ben


    _______________________________________________
    HTML-FormFu mailing list
    HTML-FormFu@lists.scsys.co.uk
    http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu
  • Benjamin Martin at Jul 5, 2010 at 1:00 pm
    Hi Carl,

    Thanks for the tip.. that sounds like an excellent, clean tidy way to
    tackle my problem.

    When I have got a solution ready I'll put some POD on here for the
    CookBook if you want.

    cheers,
    -Ben

    On 05/07/10 13:55, Carl Franks wrote:
    Hi,

    I'd recommend writing a custom constraint class, rather than using Callback.
    It just needs to inherit from HTML::FormFu::Constraint and have a sub
    named 'constrain_value' which will receive the parameters ( $self,
    $value, $params).
    You can then access the Catalyst context via $self->form->stash->{context}

    It can also define a 'constrain_values' sub to override how multiple
    values are handled, or override 'process' to take complete control -
    see the source of HTML::FormFu::Constraint for details.

    Carl


    On 2 July 2010 09:27, Benjamin Martinwrote:
    Hello,

    In my catalyst app I have a method that is used for a Callback constraint.
    In my Root.pm controller use a session and log in a user the usual way.


    package MyApp::Controller::ControllerA;
    ...
    sub formfu_callback_checka
    {
    # need to validate using something in session?..
    }


    My question is, what is the best way to get hold of the session/user data
    from within my callback method?

    thanks for any help, apologizes if this gets asked all the time,
    -Ben


    _______________________________________________
    HTML-FormFu mailing list
    HTML-FormFu@lists.scsys.co.uk
    http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu
    _______________________________________________
    HTML-FormFu mailing list
    HTML-FormFu@lists.scsys.co.uk
    http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu
  • Benjamin Martin at Jul 8, 2010 at 12:53 pm
    Hello,

    The advice I got here was very useful but being abit of a novice I did
    not find it clearly in the docs ... so here is abit of POD for the
    FormFu CookBook that might help other novices see the light.

    --- snip ---

    =head2 Implement a unique username check.

    A common task for a form is user registration. This usually requires
    that the username
    be unique. By way of example this is how it can be done (using a typical
    Catalyst app)

    package MyApp::FormFu::Constraint::Username;
    use strict;
    use base 'HTML::FormFu::Constraint';
    sub constrain_value
    {
    my $self = shift;
    my ( $value, $params) = @_;
    my $c = $self->form->stash->{context};
    my $matched = $c->model('DB::Users')->search( { username =>
    $value } )->count;
    $self->{message} = "Username already in use";
    return ( $matched > 0 ) ? 0 : 1;
    }
    1;

    Then in your formfu config

    ---
    elements:
    - type: Text
    name: username
    label: "Enter your desired username"
    constraints:
    - Required
    - '+MyApp::FormFu::Constraint::Username'

    For more info see the section 'Implement a custom constraint / validator'.

    --- snip ---

    On 05/07/10 14:00, Benjamin Martin wrote:
    Hi Carl,

    Thanks for the tip.. that sounds like an excellent, clean tidy way to
    tackle my problem.

    When I have got a solution ready I'll put some POD on here for the
    CookBook if you want.

    cheers,
    -Ben

    On 05/07/10 13:55, Carl Franks wrote:
    Hi,

    I'd recommend writing a custom constraint class, rather than using
    Callback.
    It just needs to inherit from HTML::FormFu::Constraint and have a sub
    named 'constrain_value' which will receive the parameters ( $self,
    $value, $params).
    You can then access the Catalyst context via
    $self->form->stash->{context}

    It can also define a 'constrain_values' sub to override how multiple
    values are handled, or override 'process' to take complete control -
    see the source of HTML::FormFu::Constraint for details.

    Carl


    On 2 July 2010 09:27, Benjamin Martinwrote:
    Hello,

    In my catalyst app I have a method that is used for a Callback
    constraint.
    In my Root.pm controller use a session and log in a user the usual way.


    package MyApp::Controller::ControllerA;
    ...
    sub formfu_callback_checka
    {
    # need to validate using something in session?..
    }


    My question is, what is the best way to get hold of the session/user
    data
    from within my callback method?

    thanks for any help, apologizes if this gets asked all the time,
    -Ben


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

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

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouphtml-formfu @
categoriesperl, catalyst
postedJul 2, '10 at 8:27a
activeJul 8, '10 at 12:53p
posts4
users2
websitemetacpan.org...

2 users in discussion

Benjamin Martin: 3 posts Carl Franks: 1 post

People

Translate

site design / logo © 2022 Grokbase