Example #1
0
    } else {
        // Cache data for one day by default
        $frontCache = new FrontendOutput(['lifetime' => $config->cache->lifetime]);
        return new FileCache($frontCache, ['cacheDir' => $config->cache->cacheDir, 'prefix' => $config->cache->prefix]);
    }
});
//  Setting up the view component
$di->set('view', function () use($di, $eventsManager) {
    $config = $di->get('config');
    $view = new View($config->toArray());
    $view->setViewsDir($config->application->view->viewsDir);
    $view->disableLevel([View::LEVEL_MAIN_LAYOUT => true, View::LEVEL_LAYOUT => true]);
    $view->registerEngines(['.volt' => function () use($view, $config) {
        $volt = new Volt($view);
        $volt->setOptions(['compiledPath' => $config->application->view->compiledPath, 'compiledSeparator' => $config->application->view->compiledSeparator, 'compiledExtension' => $config->application->view->compiledExtension, 'compileAlways' => $config->application->debug]);
        $compiler = $volt->getCompiler();
        $compiler->addExtension(new \Phanbook\Tools\VoltFunctions());
        return $volt;
    }]);
    // Attach a listener for type 'view'
    $eventsManager->attach('view', function ($event, $view) {
        if ($event->getType() == 'notFoundView') {
            throw new \Exception('View not found!!! (' . $view->getActiveRenderPath() . ')');
        }
    });
    // Bind the eventsManager to the view component
    $view->setEventsManager($eventsManager);
    return $view;
});
// Register the flash service with custom CSS classes
$di->set('flashSession', function () {