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/

Reply via email to