I'm not 100% sure I understand your question, but there are a couple of ways to
call actions or methods associated with a Controller. Here are the ways I've
found to programmatically call a catalyst action from within my logic, but of
course the whole things gets started off with a http request to something:
First, you can use the $c->forward() method. Using this allows you to forward
to an action is has the bonus of passing $c for you automatically.
You can also use
$c->controller('Foo')->do_stuff; method. I'm so so familar with this one as I
usually don't need it. I'm sure one of the other experts can fill in why this
is useful.
Also you can just 'plain vanilla' methods in your controller class and
reference them with $self->method(). This is good when you want to encapsulate
functionality without creating an action and poluting the action list
needlessly. You might have:
sub some_form : Public {
my ($self, $c) = @_;
if( $self->validate_these($c->request->parameters()) { .....}
}
sub validate_these
{
my $parameters = shift @_;
#run some validation
}
This can be really useful if you are subclassing Controller to make your own
and want to encapsulate functionality. Remember, you don't need to make every
single method in your controller an action!
There is a $c->detach method which is similar to forwarding but doesn't return
to the caller.
You can also use the subrequest plugin to call an action. That is a lot like
forwarding but it creates a totally new catalyst request. I've used this when
trying to mimic a portal where the main page calls a bunch of URIs to assemble
itself.
If you want to call a catalyst action from outside the catalyst framework, I've
used LWP to call URIs from things like cron jobs, etc. I don't know if there
is a way to access catalyst any other way.
I think that covers the ways and whys I've found with controller actions. Good
Luck! --john
----- Original Message ----
From: Eduardo Oliveros <[EMAIL PROTECTED]>
To: The elegant MVC web framework <[email protected]>
Sent: Wednesday, June 28, 2006 5:11:27 PM
Subject: Re: [Catalyst] Program the logic
That leads to a new question:
Is possible to call actions in the Controller without using a web browser?
Thanks,
--edu
PD: I'll use DBIx::Class, sounds promising.
2006/6/28, Nilson Santos Figueiredo Junior <[EMAIL PROTECTED]>:
> On 6/28/06, Eduardo Oliveros <[EMAIL PROTECTED]> wrote:
> > I'm planning to program the logic of the application (the Model in
> > MVC) previously to start with web page and the presentation.
>
> Actually, the Controller is what is supposed to drive the logic of the
> application. The model is really just that: the model. It's usually
> mapped to some kind of storage engine such as a RDBMS. Many strong
> advocates of MVC specifically try to leave business logic out of the
> database.
>
> > What I see is that what Catalyst calls Model is just the Objects that
> > map with the tables in the DDBB. And the logic of the application are
> > developed in the Actions (in fact linked to the web application).
>
> You'll see that it's "a little" more than that (at least when you're
> using DBIx::Class - Class::DBI can't even be compared feature-wise
> nowadays).
>
> > I know is difficult in practice to separate both worlds (logic from
> > the presentation) but that is the false promise of the MVC pattern :).
>
> Not really. It's something somewhat straight-forward when using
> something like Catalyst. All you've got to do is resist the temptation
> of polluting your controllers with things that really should be in
> your views. But sometimes it's even worth it.
>
> -Nilson Santos F. Jr.
>
> _______________________________________________
> List: [email protected]
> Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
> Searchable archive: http://www.mail-archive.com/[email protected]/
> Dev site: http://dev.catalyst.perl.org/
>
_______________________________________________
List: [email protected]
Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/
_______________________________________________
List: [email protected]
Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/