GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  REACTION::MANUAL::CLIPBOARD (3)

.ds Aq ’

NAME

Reaction::Manual::Clipboard - snippets of Reaction docs

    These should probably go in the glossary.

Domain Model DBIx::Class::Schema, MyApp::Foo, MyApp::Bar, etc.
Interface Model InterfaceModel::DBIC::Schema, InterfaceModel::Action, MyApp::InterfaceModel::Foo classes.
Controller Mediation and navigation.
ViewPort Event handling encapsulation.
Widget View logic.
Renderer MyApp::View:: classes, renders viewports.
These should go in the tutorial?

CONTENTS

SETTING UP A REACTION APPLICATION

Reaction applications are set up just like Catalyst:



    $ catalyst.pl MyApp
    # output ommited
    $ cd MyApp



    Models

Reaction provides a reflector component which automagically maps a DBIx::Class::Schema into a set of Interface Models which can be used by Reaction to build the interface components. If you’re not familiar with DBIx::Class or don’t have a schema handy, now is a good time to go through DBIx::Class::Manual::Intro to get a schema set up.

It is important that your Result-objects implement the meta-protocol of Moose. One way to achive that is to do the following:



    package MyApp::Schema::Result::Bar;
    use base DBIx::Class;
    use Moose;
   
    has name => (isa => Str, required => 1, rw => 1);
   
    use namespace::autoclean;
   
    __PACKAGE__->load_components(qw(Core));
    __PACKAGE__->table(bar);
    __PACKAGE__->add_columns(
        name => {
            data_type   => varchar,
            size        => 255,
            is_nullable => 0,
        }
    );
    __PACKAGE__->primary_key(name);
    1;



Once you have your schema set up like that, you can create the InferfaceModel:



    package MyApp::InterfaceModel::DBIC;

    use base Reaction::InterfaceModel::Object;
    use Reaction::InterfaceModel::Reflector::DBIC;

    my $reflector = Reaction::InterfaceModel::Reflector::DBIC->new;

    $reflector->reflect_schema(
         model_class  => __PACKAGE__,
         schema_class => MyApp::Schema,
         sources => [qw/Foo Baz/],
    );

    1;



Then you create a MyApp::Model that uses this InferfaceModel:



    package Myapp::Model::IM;
   
    use Reaction::Class;
   
    extends Catalyst::Model::Reaction::InterfaceModel::DBIC;

    1;



    Controllers

Root controller

Your Reaction application must have a Root controller which inherits from Reaction::UI::Controller::Root.



    package MyApp::Controller::Root;

    use warnings;
    use strict;
    use base qw/Reaction::UI::Controller::Root/;

    __PACKAGE__->config(
        view_name => Site,
        window_title => My Reaction App,
        namespace => 
    );

    sub base : Chained(/) PathPart() CaptureArgs(0) {
        # do some setup for every request
        # also provides a chain root for other controllers to use
    }

    1;



Individual controllers

For each Collection(table?) in your DB, you need to create a controller



    package MyApp::Controller::Foo;

    use base Reaction::UI::Controller::Collection::CRUD;
    use Reaction::Class;

    __PACKAGE__->config(
      model_name => IM,   # This corresponds to the name of the MyApp::Model you created earlier
      collection_name => Foo, # Name of one of the sources in your InterfaceModel
      action => {
        base => { Chained => /base,  # chain to the base action in the root controller
                  PathPart => foo },
      },
    );

    1;



XX TODO

    View

One of the views in your application should look something like this:



    package MyApp::View::TT;

    use Reaction::Class;

    extends Reaction::UI::View::TT;

    1;

    __END__;



XX TODO

SEE ALSO

o Reaction::Manual::Cookbook
o Reaction::Manual::FAQ

AUTHORS

See Reaction::Class for authors.

LICENSE

See Reaction::Class for the license.
Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 REACTION::MANUAL::CLIPBOARD (3) 2010-10-29

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.