示例#1
0
 /**
  * Add the controller's routes and relative methods.
  * Request and response are PSR-7 compliant
  * @param App $application the Slim application to be configured
  * @return null
  */
 public static function createRoutes(App $application)
 {
     // Note: in the SlimFramework's routing function closures, $this equals to the App's Container.
     $base = static::$baseUri;
     // Routes that need the user to be admin
     if (Utils::isAdmin()) {
         // Product creation (view)
         $application->map(['GET', 'POST'], "{$base}/create[/]", function (Request $request, Response $response) {
             return (new self($this))->handleCreate($request, $response);
         })->setName('productCreate');
         // Products list (view)
         $application->get("{$base}/list[/]", function (Request $request, Response $response) {
             return (new self($this))->handleReadList($request, $response);
         })->setName('productList');
         // Product edit (view)
         $application->map(['GET', 'POST'], "{$base}/{product}/edit[/]", function (Request $request, Response $response, $args) {
             return (new self($this))->handleEdit($request, $response, intval($args['product']));
         })->setName('productEdit');
     }
     // Routes that can be seen by anyone
     // ...
 }
示例#2
0
文件: routes.php 项目: elegos/PHPTest
})->setName('login');
// Logout (fake)
$app->map(['POST', 'GET'], '/logout', function (Request $request, Response $response) {
    $_SESSION['user'] = '******';
    /** @var RouterInterface $router */
    $router = $this->get('router');
    return $response->withStatus(302)->withAddedHeader("Location", $router->pathFor('home'));
})->setName('logout');
// Index (redirect/login)
$app->get('/', function (Request $request, Response $response) {
    $isAdmin = Utils::isAdmin();
    if ($isAdmin) {
        /** @var RouterInterface $router */
        $router = $this->get('router');
        return $response->withStatus(302)->withAddedHeader("Location", $router->pathFor('productList'));
    }
    return \name\giacomofurlan\TwigUtil::render($this, $response, "home.twig");
})->setName('home');
// 404, silent redirect (home / products list)
$app->getContainer()['notFoundHandler'] = function (Container $container) {
    return function (Request $request, Response $response) use($container) {
        $isAdmin = Utils::isAdmin();
        /** @var RouterInterface $router */
        $router = $container->get('router');
        $response = $response->withStatus(302);
        if ($isAdmin) {
            return $response->withAddedHeader("Location", $router->pathFor('productList'));
        }
        return $response->withAddedHeader("Location", $router->pathFor('home'));
    };
};
示例#3
0
 public static function render(Container $container, ResponseInterface $response, $template, array $context = [])
 {
     $defaultCommonContext = ['user' => Utils::isAdmin() ? 'admin' : 'n00b'];
     $context = array_merge($defaultCommonContext, $context);
     return $container['view']->render($response, $template, $context);
 }