Skip to content
This repository has been archived by the owner on May 22, 2024. It is now read-only.

Can't get parameters' default value to work #33

Open
zessx opened this issue Mar 26, 2014 · 1 comment
Open

Can't get parameters' default value to work #33

zessx opened this issue Mar 26, 2014 · 1 comment

Comments

@zessx
Copy link
Contributor

zessx commented Mar 26, 2014

I'm trying to bind those url to the same route :

  • posts
  • posts/2014

I used default values for my :year parameter, as defined in documentation :

'app' => array(
    'routes' => array(
        'posts/:year' => array(
            '@name' => 'posts',
            'action' => 'posts/index',
            'year' => 'all',
        ),
    ),
),

Here are the results :

Build url Result
Atomik::url('@posts', array('year'=>2014)) domain.tld/posts/2014
Atomik::url('@posts') domain.tld/posts/:year

How could we remove this unused/unusable /:year from the url ?
We should :

  • use Atomik::url('@posts') without parameter
  • get domain.tld/posts as the rewritten url
  • get year parameter set to all in our action file

I made an attempt to get it work (see this fork) :

// injects parameters into the url
if (preg_match_all('/(:([a-z0-9_]+))/i', $action, $matches)) {
    for ($i = 0, $c = count($matches[0]); $i < $c; $i++) {
        if (array_key_exists($matches[2][$i], $params)) {
            $action = str_replace($matches[1][$i], $params[$matches[2][$i]], $action);
            unset($params[$matches[2][$i]]);
        } elseif (array_key_exists($matches[2][$i], $default)) {
            // default value is found, remove he related part from url
            $action = preg_replace('/:'.$matches[2][$i].'\/?/i', '', $action);
        }
    }
}

Currently, it remove /:year from the url, but the action file doesn't receive any year default value.
As possible side-effects, we must think about people using Atomik without url-rewriting.

@adaniello
Copy link

This is a very interesting topic: i was forced to specify the default values ​​of the parameters every time i created a url.
I hope Maxime can help us to find a solution in the short.

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

No branches or pull requests

2 participants