On 20 Jan 2010, at 09:40, Carl Johnstone wrote:
Tomohiro Hosaka wrote:
Is this correct result?
Yes, the previous situation was a bug. Given
sub foo : Args(1) {
my ($c, $arg) = @_;
};
The URL http://127.0.0.1/foo/bar%2Fbaz would match and set $arg to
'bar/baz'
correctly. However reversing that using uri_for then returns the
incorrect
URL.
However, unfortunately - we have to provide compatibility - for
example c.uri_for('/static', 'css/crud', crud_type ) or similar
constructions were broken.
I've just fixed this in trunk so that if you have an action object
(with $c->uri_for_action, or $c->uri_for($c->action, or $c->uri_for($c-
>controller->action_for('foo') ) (as recommended to construct paths
to actions) - you *will* get the encoding for args and captures.
However passing in a set of strings to basically be concatenated to
the base uri and joined with / to produce paths will still work...
I think this is the best compromise between having round-trippable
URIs, and also maintaining compatibility for legacy applications.
If you feel differently, shout up now please :)
Cheers
t0m
_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/