Catalyst::Controller

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Catalyst::Controller

Непрочитанное сообщение ProFTP » 2009-04-21 3:44:53

нашел модуль Catalyst::Controller::FormBuilder http://search.cpan.org/~jcamacho/Cataly ... Builder.pm ,

решил сделать свой аналогичный, мне он не понравился тем что там надо тэги другие вставлять, и не опнял на счет фильтрации что делать


1) но я не опнял зачем там используется
Catalyst::Controller

http://cpansearch.perl.org/src/JCAMACHO ... Builder.pm

и методы с него

Код: Выделить всё

sub create_action {
    my $self = shift;
    my %args = @_;
    my $attr_name = $self->_fb_setup->{attr_name};
    if ( exists $args{attributes}{$attr_name} ) {
        $args{_attr_params} = delete $args{attributes}{$attr_name};
        if ( my $source_type = $self->_fb_setup->{source_type} ) {
            $args{_source_type} = $source_type;
        }
        push @{ $args{attributes}{ActionClass} }, $self->_fb_setup->{action};
    }
    $self->SUPER::create_action(%args);
}

Код: Выделить всё

sub _formbuilder {
    my $self   = shift;
    my $method = $self->_fb_setup->{method_name};
    $self->$method(@_);
}
2) в Catalyst::Action

если я правильно понял сделан для того чтобы "прицепить" к объекту $c методы (только не понятно зачем)

http://x0.org.ua/perl/Action.pm

Код: Выделить всё

sub execute {
    my $self = shift;
    my ( $controller, $c ) = @_;
    return $self->NEXT::execute(@_)
      unless exists $self->attributes->{ActionClass}
      && $self->attributes->{ActionClass}[0] eq
      $controller->_fb_setup->{action};
    my $form = $self->_setup_form(@_);
    Scalar::Util::weaken($form->{c});
    $controller->_formbuilder($form);
    $self->NEXT::execute(@_);
    $controller->_formbuilder($form);   # keep the same form in case of forwards
    $self->setup_template_vars( @_ );
}
от куда это взялось my ( $controller, $c ) = @_; ?
что такое $controller?

3) вот я написал свой класс!!

что мне надо в него добавить, что он вызывался так как Catalyst::Controller::FormBuilder
my $form = $self->formbuilder, инициализировался сам? и чтобы методы его "диспатчизировались" есл ия правильно понимаю

вот мой класс:

Код: Выделить всё

package FormValid;
# use strict;
use warnings;
use base qw(Class::Accessor);
__PACKAGE__->mk_accessors(qw/name id html text/);
sub new {
    my $class = shift;
    my $self = bless {}, $class;
    return $self;
}
sub disp {
my $self = shift;
my $name = $self->name;
my $id = $self->id;
my $html =  $self->html;
my $text =  $self->text;
..............................................
=================================

что происходит после этого *{"$class\::$method"} = $class->make_accessor($method); ?

вот еще нашел не понял:

Код: Выделить всё

*{__PACKAGE__ . "::$sub"} = sub {
зачем это сделано?

Код: Выделить всё

sub new {
    my ( $self, $c ) = @_;
    $self = $self->NEXT::new($c);
    $self->{namespace}               ||= ref $self;
    $self->{additional_base_classes} ||= ();
    for my $sub ( @{$self->{subroutines}} ) {
        my $target_class = $self->{target_class};
        unless ( $CLASS_CACHE{$target_class}{$sub} ) {
            $c->log->debug( "Installing sub:$sub from target_class:$target_class into proxy" ) if $c->debug;
            $CLASS_CACHE{$target_class}{$sub} = 1;
            no strict 'refs';
            *{__PACKAGE__ . "::$sub"} = sub {
                shift;
                return $c->model($target_class)->$sub(@_);
            }
        }
    }
    return $self;
}
http://cpansearch.perl.org/src/ALEXP/Ca ... l/Proxy.pm

Код: Выделить всё

    *{"${class}::${collection_moniker}::ACCEPT_CONTEXT"} = sub {

Код: Выделить всё

................................................................
  foreach my $moniker ( keys %collections ) {
    next if $collections{$moniker};
    # perhaps you're too lazy to create Collection class.
    # now we should try creating default one!
    my $package_body = <<"EOT";
package $moniker;
use strict;
use base qw( Jifty::DBI::Collection );
1;
EOT
      eval $package_body;
      croak "Can't prepare $moniker: $@" if $@;
  }

  foreach my $moniker ( @monikers ) {
    $moniker->require or croak $@;
    next if $moniker =~ /Collection$/;

    $moniker =~ s/^$schema_base\:://;
    *{"${class}::${moniker}::ACCEPT_CONTEXT"} = sub {
      shift;
      shift->model( $model_name )->record( $moniker );
    };

    my $collection_moniker = $moniker.'Collection';
    *{"${class}::${collection_moniker}::ACCEPT_CONTEXT"} = sub {
      shift;
      shift->model( $model_name )->collection( $collection_moniker );
    };
  }
  return $self;
}
http://cpansearch.perl.org/src/ISHIGAKI ... fty/DBI.pm
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35462
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Catalyst::Controller

Непрочитанное сообщение Alex Keda » 2009-08-25 7:59:29

может ненадо делать если не знаешь зачем оно нужно? =)
Убей их всех! Бог потом рассортирует...

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: Catalyst::Controller

Непрочитанное сообщение zingel » 2009-08-25 8:09:13

ну в доке там есть же в башке .pm
Z301171463546 - можно пожертвовать мне денег