Mercurial > pub > Impl
view Lib/IMPL/Web/QueryHandler/UrlController.pm @ 128:08753833173d
Fixed a error handling issue in JSON output: errors are correctly transfered
A complete documentation for a IMPL::Web::Application::ControllerUnit
author | wizard |
---|---|
date | Tue, 15 Jun 2010 02:41:07 +0400 |
parents | c13a215508ca |
children | 5a9f64890c31 |
line wrap: on
line source
package IMPL::Web::QueryHandler::UrlController; use strict; use base qw(IMPL::Web::QueryHandler); use IMPL::Class::Property; use IMPL::Exception; use Carp; BEGIN { public property namespace => prop_all; } __PACKAGE__->PassThroughArgs; sub Process { my ($this,$action,$nextHandler) = @_; my $namespace = $this->namespace || $action->application->type; my @target = grep $_, split /\//, ($ENV{PATH_INFO} || '') or die new IMPL::Exception("No target specified"); my $method = pop @target; $method =~ s/\.\w+$//; my $module = join '::',$namespace,@target; eval "require $module; 1;" unless $INC{$module}; carp $@ if $@; if(UNIVERSAL::can($module,'InvokeAction')) { $module->InvokeAction($method,$action); } else { die new IMPL::InvalidOperationException("Failed to invoke action",$ENV{PATH_INFO},$module,$method); } } 1; __END__ =pod =head1 NAME C<IMPL::Web::QueryHandler::UrlController> - вызов метода на основе <url> запроса. =head1 DESCRIPTION Использует переменную C<$ENV{PATH_INFO}> для получения имени и метода модуля. =cut