Skip to content

Instantly share code, notes, and snippets.

@weierophinney
Created September 25, 2012 19:00
Show Gist options
  • Select an option

  • Save weierophinney/3783768 to your computer and use it in GitHub Desktop.

Select an option

Save weierophinney/3783768 to your computer and use it in GitHub Desktop.
Change controller name via listener
<?php
return array(
'router' => array('routes' => array(
'api' => array(
'type' => 'Segment',
'options' => array(
'route' => '/api/v[:version]/:controller[/:id]',
'defaults' => array(
'__NAMESPACE__' => 'Api\V%VERSION%\Controller',
'controller' => 'User', // just an example
'version' => 1,
),
),
),
)),
'controllers' => array(
'invokables' => array(
'Api\V1\Controller\User' => 'Api\Controller\UserController',
'Api\V1\Controller\Group' => 'Api\Controller\GroupController',
// etc.
),
),
);
<?php
namespace My;
class Module
{
public function onBootstrap($e)
{
$events = $e->getTarget()->getEventManager();
$events->attach('route', array($this, 'onRoutePost'), -100);
}
public function onRoutePost($e)
{
$matches = $e->getRouteMatch();
$controller = $matches->getParam('controller', '');
if (!strstr($controller, '%VERSION%')) {
return;
}
$matches->setParam('__CONTROLLER__', $controller);
$version = $matches->getParam('version', 1);
$controller = str_replace('%VERSION%', $version, $controller);
$matches->setParam('controller', $controller);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment