Hi!

You could define an optional parameter in your route and then use the Url
view helper to inherit that value.
When the param is not set in your current route it will use the default
value (or no value), otherwise it will use the current value.

For example, If you have defined this routes:

'home' => [
    'type' => 'Zend\Mvc\Router\Http\Segment',
    'options' => [
        'route'    => '/[:env]',
        'defaults' => [
            'controller' => 'Application\Controller\Index',
            'action'     => 'index'
        ],
    ],
],

'another-route' => array(
    'type' => 'Zend\Mvc\Router\Http\Segment',
    'options' => array(
        'route'    => '/foo/bar/[:env]',
        'defaults' => array(
            'controller' => 'Application\Controller\Foo',
            'action'     => 'bar'
        ),
    ),
),


When you are in www.mydomain.com/, if you use the URL view helper like
this, $this->url('another-route', [], true), it will produce the route
'/foo/bar/'
Otherwise, if you are in www.mydomain.com/another-env, the same previous
usage of the URL view helper will produce the route '/foo/bar/another-env'
This is because of the last boolean parameter of the URL view helper, which
defaults to false. In any place where you don't want the env parameter to
be inherited, just don't use the inheritance and set it yourself like
this $this->url('another-royute',
['env' => 'another-one'])

You could define constraints for your env if you need it, and also define a
default value.

Best regards.



2014-07-25 21:51 GMT+02:00 Emmanuel Bouton <[email protected]>:

> Hello,
>
> I'm working on a web admin that manages a list of servers.
> In the header of all the pages there's a select box for the servers
> environments.
>
> When no environment is selected, all the pages concerns all the servers.
> When an environment is selected, all the pages concerns only the server of
> this specific environment.
>
> The easy way to manage the current environment in all my controllers would
> be to store it in the session. But I'd rather send it on each request. That
> would allow to work on multiple environments in several tabs of the same
> browser.
>
> How would you do that ?
> Is there a proper way to change all urls in views to add the environment id
> when it has been selected ? maybe in the routes ?
>
> Thanks,
> Emmanuel
>



-- 
Alejandro Celaya Alastrué
http://www.alejandrocelaya.com

Reply via email to