Skip to content

Instantly share code, notes, and snippets.

@bytespider
Created May 22, 2013 09:45
Show Gist options
  • Save bytespider/5626438 to your computer and use it in GitHub Desktop.
Save bytespider/5626438 to your computer and use it in GitHub Desktop.
<?php
function createMVCRoute($defaults)
{
$application = \Slim\Slim::getInstance();
return function () use ($application, $defaults)
{
$controllerClass = $defaults['controller'];
$defaultAction = isset($defaults['action']) ? $defaults['action'] : 'index';
$args = func_get_args();
$action = ($action = array_shift($args)) ? $action : $defaultAction;
$controller = new $controllerClass($application);
call_user_func_array([$controller, $action], $args);
};
};
// Article
$application->map('/article(/:action)(/:id)', createMVCRoute(['controller' => '\Application\Controller\ArticleController']))->via('GET', 'POST')->name('article');
// Issue
$application->map('/issue/order/:id', createMVCRoute(['controller' => '\Application\Controller\IssueController', 'action' => 'order']))->via('POST')->name('issue-order');
$application->map('/issue(/:action)(/:id)', createMVCRoute(['controller' => '\Application\Controller\IssueController']))->via('GET', 'POST')->name('issue');
// Index
$application->map('/(:action)(/:id)', createMVCRoute(['controller' => '\Application\Controller\IndexController']))->via('GET', 'POST')->name('index');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment