Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Array parameter routing (idea) #38

Open
emlynwest opened this issue Apr 7, 2013 · 4 comments
Open

Array parameter routing (idea) #38

emlynwest opened this issue Apr 7, 2013 · 4 comments

Comments

@emlynwest
Copy link
Contributor

The idea is to be able to have a "match many" parameter when defining routes. This would allow the ability to pass any number of segments as an array to an action.

Example:
Define a route to match controller/action/names/[]/foo/bar where the [] would be a place-holder marker that matches any number of segments until the one after it is matched (in this case foo).

This would then be passed to the action like so:

public function action_action($names, $foo, $bar){}

$names would then be an array populated with anything that is found between the names and foo segment, or an empty array if none where matched.

A route such as controller/action/names/tom/dick/harry/foo/bar would pass the parameters below to the action.

$names = array('tom', 'dick', 'harry');
$foo = 'foo';
$bar = 'bar';

This could then also work with multiple array segments: controller/action/names/[]/ages/[] to pass multiple arrays to the action.

@WanWizard
Copy link
Contributor

@FrenkyNet Is this supported by fuelphp/routing ?

@WanWizard
Copy link
Contributor

@FrenkyNet ping?

@frankdejonge
Copy link
Contributor

@WanWizard this isn't supported, I wouldn't know of any way to map this to an array though. 😕

@WanWizard
Copy link
Contributor

Thought so.

Possible option: there is already the possibility for named parameters, right. If would not be to difficult to implement that if a name occurs multiple times, it's stored in an array, so you can define controller/action/names/names/names/ages/.... That should not be that difficult.

Challenge is when, as Steve mentioned, the number of names is variable.

Alteratively you could define the named parameter as an array like so: controller/action/names[]/ages, which basically means to glob segments into $names until you get to a segment called "ages"...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants