Hi everyone,
currently I am building a small JS/CSS-combining and minifying
controller. To build my URI I am doing business as usual:
$c->uri_for(MyApp->Controller('Js')->action_for('default'), qw
(list of js-files to combine));
yielding (after some hacks) a URI like:
http://localhost/js/list/of/js-files/to/combine.js?m=12345667
which works fine. However, I would like to automatically get added a
Query-Parameter after the URI that reflects the timestamp of the most-
recent file in the URI to allow the browser to do caching properly.
As far as I understand there is currently no way to let the
Controller construct the URI.
As a bad hack, I did something like:
# in my App:
around 'uri_for' => sub {
my $orig = shift;
my $c = shift;
my $path = shift;
my @args = @_;
if (blessed($path) && $path->class && $path->class->can
('uri_for')) {
# simply let the component do the job
return $c->component($path->class)->uri_for($c, $path, @args);
}
return $c->$orig($path, @args);
};
# in my Controller:
sub uri_for :Private {
# logic to create the URI I want
}
Of course it is great that Catalyst allows something like that. Are
there any plans to offer something alike out of the box?
Regards,
Wolfgang Kinkeldei
--
' /\_/\ ' .print[split??,"".(($/=q|Cms)+-03467:;<=|)=~tr!C-z -B! -z!)x
'( o.o )' .$/]->[hex]foreach split qr<>,qq+1ecd039ad65b025b8063475b+||
' > ^ < ' .q<!-- Wolfgang Kinkeldei - mailto:wolfgang@kinkeldei.de -->
currently I am building a small JS/CSS-combining and minifying
controller. To build my URI I am doing business as usual:
$c->uri_for(MyApp->Controller('Js')->action_for('default'), qw
(list of js-files to combine));
yielding (after some hacks) a URI like:
http://localhost/js/list/of/js-files/to/combine.js?m=12345667
which works fine. However, I would like to automatically get added a
Query-Parameter after the URI that reflects the timestamp of the most-
recent file in the URI to allow the browser to do caching properly.
As far as I understand there is currently no way to let the
Controller construct the URI.
As a bad hack, I did something like:
# in my App:
around 'uri_for' => sub {
my $orig = shift;
my $c = shift;
my $path = shift;
my @args = @_;
if (blessed($path) && $path->class && $path->class->can
('uri_for')) {
# simply let the component do the job
return $c->component($path->class)->uri_for($c, $path, @args);
}
return $c->$orig($path, @args);
};
# in my Controller:
sub uri_for :Private {
# logic to create the URI I want
}
Of course it is great that Catalyst allows something like that. Are
there any plans to offer something alike out of the box?
Regards,
Wolfgang Kinkeldei
--
' /\_/\ ' .print[split??,"".(($/=q|Cms)+-03467:;<=|)=~tr!C-z -B! -z!)x
'( o.o )' .$/]->[hex]foreach split qr<>,qq+1ecd039ad65b025b8063475b+||
' > ^ < ' .q<!-- Wolfgang Kinkeldei - mailto:wolfgang@kinkeldei.de -->